赋值c的左操作数需要左值
按此代码赋值c的左操作数需要左值,c,C,按此代码 (nr % 10) % 2 == 0 ? a[i] = nr % 10 + 1 : a[i] = nr % 10; 我得到了赋值的左操作数所需的左值。有人能帮我吗?您必须使用: a[i] = (nr % 10) % 2 == 0 ? nr % 10 + 1 : nr % 10; 这段代码的总体问题是,条件运算符是表达式,而不是语句。虽然可以使用赋值表达式作为其一部分,但最好对整个表达式进行赋值,如下所示: a[i] = (nr % 2) == 0 ? nr % 10 + 1 : n
(nr % 10) % 2 == 0 ? a[i] = nr % 10 + 1 : a[i] = nr % 10;
我得到了赋值的左操作数所需的左值。有人能帮我吗?您必须使用:
a[i] = (nr % 10) % 2 == 0 ? nr % 10 + 1 : 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));
在上一次作业的周围加上括号以解决此问题:
(nr % 10) % 2 == 0 ? a[i] = nr % 10 + 1 : (a[i] = nr % 10);
这是因为赋值的优先级比三元运算符低,所以代码像a=b?d:c
被解析为a=(b?c:d)
,而不是(a=b)?c:d
。?
和之间的赋值:
不需要放在括号中,因为没有任何语法歧义。a[i]=(nr%10)+1-((nr%10)%2)代码>