C语言题之条件运算符

一个条件运算符不是右结合性的吗.那就如这道题
int a=1,b=2,c=3,d=4;
printf("%d",a<b?a:c<d?c:d)
它是从右边算的吗.那如果不是那它的右结合性是干什么的.右结合性不是从右边算起吗.
那这道题它输出的结果是什么

输出是
1

这个运算符是从右向左结合

a<b?a:c<d?c:d

先算右边的c<d?c:d

得到的是c 即3

然后式子变为a<b?a:3

最后结果就是a

答案是1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-13
在表达式求值时的先后顺序
右结合:自右向左

先把右边表达式的值算出来

a<b?a:c<d?c:d 等价于表达式(a<b)?a:(c<d?c:d).
判断 a<b 结果为真,则结果为a 。所以最后的输出的结果应该是 1
第2个回答  2007-10-13
1
从右边开始算阿
相似回答