0

short の C 配列と long の配列があります。データが不十分または欠落しているために、配列スロットの 1 つがそれを呼び出す関数によって埋められない場合を定義できるようにしたいと考えています。どちらの場合も有効な値は正または負ですが、値が short または double に配置できる最大値に近づくことはないと想定できます。

これは Windows 64 ビット アプリでSHRT_MAX、短い一意の番号として使用しています。私の質問は次のとおりです。

  1. SHRT_MAXに使用できるものと同等のものは何doubleですか?

  2. SHRT_MAXand doublemaxに頼るのではなく、これを行うより良い方法はありますか?

4

4 に答える 4

1

配列内のnullパラメータを示すために最大値を使用していると思います。これは一般的な手法であり、完全に有効です。

max double については、からしたいDBL_MAXです<float.h>

于 2012-09-18T01:55:48.650 に答える
1

マクロは、まさにあなたがそれらを使用している理由のためにそこにあります-これは良いです(そして移植可能です)

見てDBL_MAX

于 2012-09-18T01:57:28.460 に答える
0

シグナリング NaN ( numeric_limits::signaling_NaN) を使用できます。そうすれば、誰かがそれを使おうとすると、浮動小数点例外が発生します。

于 2012-10-16T23:14:26.600 に答える
0

1) You can use DBL_MAX from float.h or numeric_limits<double>::max()

2) Using the maximum values seems fine as long as you're sure that they will never be "normal" values. Otherwise you could use a little object that knows whether the number was changed:

struct Input
{
    short value;
    bool isTransformed;

    Input() : value(0), isTransformed(false) {}
};
于 2012-09-18T02:01:12.453 に答える