1. ホーム
  2. スクリプト・コラム
  3. その他

[解決済み] 式は変更可能なlvalueでなければならない

2022-01-09 05:34:54

質問

コードです。

int M = 3; 
int C = 5; 
int match = 3;
for ( int k =0; k < C; k ++ )
{
    match --; 
    if ( match == 0 && k = M )
    {
         std::cout << " equals" << std::endl;
    }
}

そして、エラーが発生しました。

Error: expression must be a modifiable value

を "if"行に追加してください。

というような書き方をした場合。

if ( match == 0 )

大丈夫です。

解決方法は?

代入演算子の優先順位は && ということになるので、あなたの条件は等価です。

if ((match == 0 && k) = m)

しかし、この左辺は rvalue、つまり部分式 match == 0 && k ということで、代入はできません。

これに対して、比較は優先順位が高いので match == 0 && k == m とは等価である。

if ((match == 0) && (k == m))