web-dev-qa-db-ja.com

C ++では整数をNaNにできますか?

intNaNに設定できますか?はいの場合、intNaNかどうかをどのように確認できますか?

27
MBZ

いいえ、NaNは浮動小数点値です。

intのすべての可能な値は数値です。

編集

標準は言う:

6.2.6.2 40)たとえば、1つのパディングビットがパリティビットである場合、パディングビットの組み合わせによってはトラップ表現が生成される場合があります。とにかく、有効な値に対する算術演算では、オーバーフローなどの例外的な条件の一部として以外はトラップ表現を生成できません。これは、符号なしでは発生しません。タイプ。

したがって、mayが実装固有の無効な整数値である可能性がありますが、それらを生成する定義された方法はありません。

38
DerKuchen

一般的に(特にC++の場合は、私の知る限り):いいえ

整数NaN

ほとんどの固定サイズの整数形式には、無効なデータを明示的に示す方法がありません。

5
Mark Rushakoff

いいえ、intをNaNに設定することはできません。

1
codaddict

Nanのような特定のint値はありません。通常、人々はこの値を表すために大きな整数を使用します。 unsigned intの場合、通常は-1を使用します。

1
Manoj R

失敗を処理するための最も適切なAPIは、次のようなAPIで2番目の整数エラーコードを返すことだと思います。

int myfunc(args, int* realReturn);

返されるintはエラーコードです。

前の出力は、呼び出しコードでポインタとして渡されます。

int myInt;
if (myFunc(args, &myInt) != 0) {
//handle error
}
0
gturbo