<分区>
在此代码处
(nr % 10) % 2 == 0 ? a[i] = nr % 10 + 1 : a[i] = nr % 10;
我得到一个左值作为赋值的左操作数
。谁能帮我解决这个问题?
标签 c
<分区>
在此代码处
(nr % 10) % 2 == 0 ? a[i] = nr % 10 + 1 : a[i] = nr % 10;
我得到一个左值作为赋值的左操作数
。谁能帮我解决这个问题?
最佳答案
这段代码的总体问题是条件运算符是一个表达式,而不是一个语句。虽然您可以使用赋值表达式作为其一部分,但最好对整个表达式进行赋值,如下所示:
a[i] = (nr % 2) == 0 ? nr % 10 + 1 : nr % 10;
// ^^^^^^^^
// No need to obtain a remainder of division by 10,
// because 2 is a divisor of 10.
注意:您可以通过一个简单的技巧完全避免条件语句:
a[i] = nr % 10 + (1 - (nr % 2));
关于c - 左值需要作为赋值 c 的左操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33845795/