Code Fix

初級if文で = と == を取り違えたときの挙動 › パターン2

if文で = と == を取り違えたときの挙動

比較のつもりで書いた if (ok = 1) が実は代入文になっているバグです。

 1  #include <iostream>
 2  int main() {
 3      int age = 15;
 4      if (age ___ 18) {
                 ^
 5          std::cout << "adult" << std::endl;
 6      } else {
 7          std::cout << "minor" << std::endl;
 8      }
 9      return 0;
10  }
出力: adult(15歳なのにadultと表示される)期待: minor

空欄を埋めてコンパイル・実行を通す

広告
広告スロット(未設定)

if文で = と == を取り違えたときの挙動

C++はこれを構文エラーとして扱わず、代入結果の値を条件として評価してしまいます。

このエラーの解説と類題をまとめて見る →

広告
広告スロット(未設定)