条件运算符不是右结合吗 int x=1,y=0;
x<(y+x)?'B':'C'>y++?'A':'Z' 为什么是’A‘ 求详解 有两个?= 条件运算符 不是应该 先看'C'>y++?'A':'Z' 不是右结合性吗?从右到左 y++之后 y=1 x<(x+y) 就是1<2 应该是’B‘
一步一步往后看就行了,三元运算符条件为真,返回第一个元素,为假返回第二个元素
x<(y+x)?'B':'C' x<(y+x)不成立,结果是 ‘C’
'C'>y++?'A':'Z' ,'C'>y++成立 ,结果是'A'
先要明白?:这个条件运算符的运算规则
exp1?exp2:exp3
若表达式exp1为真那么结果为exp2的值,否则为exp3的值
x<(y+x)?'B':'C'>y++?'A':'Z'
第一步x<(y+x)不成立,所以结果为'C'
第二步'C'>y++成立,所以结果为'A'
你是不是忘了y++的优先级比赋值的优先级还要低
要把整个表达式的值都算完了才会执行++