2026-08-24
shortcircuit.c
#include <stdio.h>
int say(int n) {
printf("%d ", n);
return n;
}
int main(void) {
if (say(0) && say(1)) {
say(2);
}
printf("\n");
}
これは何を出力するでしょうか?
Answer
0(その後に改行)。&&は左のオペランドを先に評価し、短絡評価を行います — say(0)は0(偽)を返すため、say(1)は実行されず、say(2)も実行されません。実際に出力されるのは最初の呼び出しの0だけです。