gpt4 book ai didi

c++ - 表达式必须是可修改的左值

转载 作者:IT老高 更新时间:2023-10-28 13:02:47 24 4
gpt4 key购买 nike

我有以下代码:

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

在那条“如果”行上。我不是想在这里修改“匹配”或“k”值,但为什么会出现这个错误?如果我只是这样写:

if ( match == 0 )

没关系。有人可以向我解释吗?

最佳答案

赋值运算符的优先级低于&&,所以你的条件相当于:

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

但它的左边是一个右值,即由子表达式 match == 0 && k 求值得到的 bool 值,所以你不能给它赋值。

相比之下,比较的优先级更高,所以 match == 0 && k == m 等价于:

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

关于c++ - 表达式必须是可修改的左值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12745601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com