c - 左值需要作为赋值 c 的左操作数

标签 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/

相关文章:

c - Linux C 套接字 - 保持服务器处于事件状态

c - For 循环中的三元运算符导致无限迭代

c - 将 C 指针重新映射到 3D 数组

c - 在 C 中编写函数时返回浮点值

c - 对于数组,为什么 a[5] == 5[a]?

c - 覆盖窗口

c - 所以我写了这段代码但是循环不起作用

c - c 程序崩溃

c - 如何监听目录或文件的变化?

c - 简单的 C 菜单构建,Scanf 不拖拉输入