ホームページ  >  記事  >  バックエンド開発  >  次の C/C コードの `c` の値は何ですか: `int a = 2;ブール b = a; int c = 3 b;`?

次の C/C コードの `c` の値は何ですか: `int a = 2;ブール b = a; int c = 3 b;`?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-19 20:53:02947ブラウズ

What is the value of `c` in the following C/C   code: `int a = 2; bool b = a; int c = 3   b;`?

bool から int への変換: 0 または 1 の値が保証されます

bool 値を int に変換するときによくある誤解が生じます。多くのコンパイラはブール値を 0 または 1 として保存しているようですが、この動作は保証されていますか?

質問:

次の C コード スニペットを考えてみましょう:

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

c の値は 4 または 5 になりますか?

答え:

はい、C と C では c は常に 4 になります。 .

説明:

  • C : C 標準 (§4.5/4) によれば、「bool 型の右辺値」 false がゼロになり、true が 1 になると、int 型の右辺値に変換できます。したがって、b は 0 に変換されます。
  • C: C (§6.3.1.2/1) では、「スカラー値が _Bool に変換されるとき、値が _Bool の場合、結果は 0 になります」 0 と等しいと比較され、それ以外の場合、結果は 1 になります。これは、a が 1 に変換され、b に格納されることを意味します。
  • int への変換: int は 0 と 1 の両方を保持できるため、_Bool から int への変換は簡単です (§6.3.1.3)。 。どちらの場合も、b の値は変更されず、c は 3 0 = 4 になります。

以上が次の C/C コードの `c` の値は何ですか: `int a = 2;ブール b = a; int c = 3 b;`?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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