初級 › if文で = と == を取り違えたときの挙動 › パターン1
if文で = と == を取り違えたときの挙動
比較のつもりで書いた if (ok = 1) が実は代入文になっているバグです。
1 #include <iostream> 2 int main() { 3 int ok = 0; 4 if (ok ___ 1) { ^ 5 std::cout << "yes" << std::endl; 6 } else { 7 std::cout << "no" << std::endl; 8 } 9 return 0; 10 }
出力: yes(okは0のはずなのに実行される)期待: no
空欄を埋めてコンパイル・実行を通す
if (ok = 1)は比較ではなく代入です。okに1を代入し、その代入結果(1、真)を条件として評価するため、常にyes側が実行されます。
次の問題