1. ホーム
  2. c

[解決済み] なぜCのブール型マクロでは、単に1としてではなく、#define TRUE (1==1)なのですか?

2022-04-25 17:02:51

質問

C言語での定義を見たことがある

#define TRUE (1==1)
#define FALSE (!TRUE)

これは必要なことなのでしょうか?単純にTRUEを1、FALSEを0と定義することの利点は何でしょうか?

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

この方法では、実際の boolean 型に解決されます(そして truefalse ) コンパイラがサポートしている場合。(具体的には、C++)

しかし、C++が使用されているかどうかを確認する方がよいでしょう( __cplusplus マクロ)を使って、実際に truefalse .

Cコンパイラでは、これは次のように等価です。 01 .

(括弧を取り除くと、操作の順序の関係でそれが壊れることに注意してください)