c++表达式的优先级问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 10:56:24
表达式为:x?a:b=1
判断一个表达式应该先看优先级,当运算符级别相同时在看结合性。
条件运算符的优先级是高于赋值运算符的,那么应该先算x?a:b,再执行赋值,相当于(x?a:b)=1,但编译器却解释为x?a:(b=1)
请问如何理解?

x?a:b=1
三目运算符?:执行顺序为 右->左
先执行冒号后面的 b=1

x?a:b=1 此表达式是错误的。
x?a:b=1相当于(x?a:b)=1 作为1 只能给变量(及变量等价形式)赋值,不能给表达式(x?a:b)赋值。如果写成x?a:(b=1)才是合法形式

若x为真,则返回a;
若x为假,则执行b=1.

一楼错误,三目运算虽低,但仍高于赋值;
二楼回答模糊,表达式应先根据优先级判断,优先级相同时,再分析结合性;
三楼文不对题;
四楼错误,不理解表达式值,x?a:b=1可以运行;