比較演算の結果の値

C の比較演算の結果で,true の場合は 1false の場合は 0 っていうのが常識的な 挙動のような気がするけど,未規定とかじゃなくてちゃんと決まっているのか, 前から気になっていたのでちゃんと調べた。 素直に検索しても出なかったけど,ちゃんと規格(に近いもの)を見に行ったら 簡単に書いてあるのが見つかって,どうやら true1false0 になるってのは 決まってるっぽい。

つまり,以下のコードは環境に依存せずに 2 を出力する。

#include <stdio.h>

int main(void) {
    int num = (0 == 0) + (0 == 0);
    printf ("%d\n", num);
    return 0;
}

あと,結果の型は int

参考