1. ホーム
  2. c

[解決済み] C言語規格では、真理値として0か1を明示的に示しているのですか?

2023-02-08 18:39:08

質問

と等しくない数は、すべて 0 と表示されます。 true をC言語で見ると、こう書ける。

int a = 16;

while (a--)
    printf("%d\n", a);  // prints numbers from 15 to 0

しかし、true/false の定義が 1 / 0 をC言語で書いてみたので、以下のようなコードを試してみました。

printf("True = %d, False = %d\n", (0 == 0), (0 != 0));  // prints: True = 1, False = 0

C言語規格では、trueとfalseの真偽値を明示的に 10 をそれぞれどうするか?

どのように解決するのですか?

<ブロッククオート

の真理値をC標準で明示的に示していますか? truefalse として 0 そして 1 をそれぞれどうするか?

C言語規格では truefalse をマクロとして stdbool.h に展開され 1 そして 0 をそれぞれ

C11-§7.18:

残りの3つのマクロは,以下の場所で使用するのに適しています. #if プリプロセッシングディレクティブで使用するのに適しています。これらは

true

に展開され、整数の定数 1 ,

false

に展開され、整数の定数 0 [...]

演算子について ==!= というように、標準では

C11-§6.5.9/3:

== (イコール・トゥ)と != (not equal to) 演算子は優先順位が低いことを除けば、関係演算子と類似しています。 108) 各演算子から 1 を返し、指定された関係が真であれば 0 を返します。結果は int . オペランドの任意のペアで、関係のちょうど1つが真である。