c++ - C 中的左值必需错误

标签 c++ c variables conditional-operator lvalue

我的代码是:

#include<stdio.h>
int main() {
   int a=10, b;
   a >= 5 ? b=100 : b=200;
   printf("%d %d", a, b);
   return 0;
}

这里在条件运算符行中出现了“需要左值”。

你能解释一下为什么吗?

顺便说一下,同样的程序在 C++ 中运行得很好。

最佳答案

编写该作业的惯用方式是:

b = (a >= 5) ? 100 : 200;

如果您坚持按自己的方式行事,请添加括号:

(a >= 5) ? (b=100) : (b=200);

有关为什么这在 C++ 中有效但在 C 中无效的详细信息,请参阅 Conditional operator differences between C and C++ (感谢@Grijesh Chauhan!)

关于c++ - C 中的左值必需错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15190094/

相关文章:

c++ - 如何将变量与字符串值组合

c++ - 创建从 CTabCtrl 派生的类

c - NodeJs 和 C 子进程之间通信的最佳方式

javascript - PHP 到 JS : printing js variable (like PHP echo) compatible with AJAX responseText?

arrays - JQ 如何向完整树添加节点

c++ - .obj 中已经定义的变量;这里发生了什么?

c++ - 从另一个类调用 QQmlApplicationEngine 时的 TableView 和 QAbstracTableModel

c++ - 为什么以这种方式使用 move 语义无效?

c++ - ncurses 双重释放的任何可能原因?

c++ - 内联汇编操作数约束