ホームページ >バックエンド開発 >C++ >bool から int への変換は 0 または 1 であることが保証されていますか?

bool から int への変換は 0 または 1 であることが保証されていますか?

DDD
DDDオリジナル
2024-11-15 09:42:02381ブラウズ

Is bool Conversion to int Guaranteed to Be 0 or 1?

bool int への変換: 0 または 1 であることが保証されますか?

質問:

多くのコンパイラは bool を格納しているようです値は 0 または 1 のいずれかになりますが、この動作は保証されますか?具体的には、次のスニペット内:

int a = 2;
bool b = a;
int c = 3 + b; // 4 or 5?

回答:

はい、bool 値は int に変換されるときに 0 または 1 に変換されることが保証されます。この動作は、C と C 標準の両方で定義されています。

C (§4.5/4):

bool 型の右辺値は、次の右辺値に変換できます。 int 型で、false は 0 になり、true は 1 になります。

C (§6.3.1.2/1):

スカラー値が _Bool に変換されると、値が 0 と等しい場合、結果は 0 になります。それ以外の場合、結果は 1 です。

したがって、指定された例では、b は 0 (a が 0 に等しい場合) または 1 (a が 0 に等しい場合) に変換されます。 b に 3 を加えると、a の値に応じて 4 または 5 になります。

以上がbool から int への変換は 0 または 1 であることが保証されていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。