初級 › if文の条件式で = と == を間違えて常に真になる › パターン1
if文の条件式で = と == を間違えて常に真になる
比較のつもりで==と書くべきところを=と書いてしまうと、比較ではなく代入になり、条件は代入した値の真偽で判定されます。
1 #include <stdio.h> 2 3 int main(void) { 4 int ok = 0; 5 if (ok ___ 1) { ^ 6 printf("yes\n"); 7 } 8 return 0; 9 }
出力: yes(okが0のはずなのに実行される)期待: 何も表示されない
空欄を埋めてコンパイル・実行を通す
if (ok = 1)は比較ではなく代入です。okに1が代入され、その代入結果(1)が真として評価されるため、常にブロックが実行されます。
次の問題