发布网友 发布时间:2022-04-24 03:37
共2个回答
热心网友 时间:2023-05-19 07:42
按照你的代码(我加了一句输出),汇编之后,发现g++忽略了1?1:a=1;
但是将1?1:a=1;改成1?a:1=1时编译报错,这应该是g++编译器在检查代码时的方向有关
在gcc中无论此三目运算是不能被赋值的,也就是说,不能被当做左值.
而在g++中是可以做左值的
热心网友 时间:2023-05-19 07:43
是否应该是这个原因:C++ 还有一条规定(与C不同),如果三目运算符的真假值都是左值,则整个表达式就可以当做左值追问什么叫三目运算符的真假值都是左值?你的意思是整个三目表达式的值是真假值,则整个表达式就可以当做左值?追答不是啊,是那个为真假时后面得到的值如果是左值,整个表达式就是左值