C语言问题,求大神解决,谢谢拉。。我是小白,解释下原因

60. 若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式a<b?a:c<d?c:d的值是 。
(A)1 (B)2 (C)3 (D)4
答案:A

主要考察你c语言三目运算符的结合方向 是自右向左的
所以a<b?a:c<d?c:d

可以看成 a<b?a: (c<d?c:d) 1 < 4 ? a : (c < d ? c:d)

括号内的表达式也可以看做是一个元素

因为 a = 1 b = 4 所以 条件 a < b 成立 所以选前者 a

答案就是 A) 1
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-11
a<b?a:c<d?c:d = a<b?a: (c<d?c:d)

问号表达式是右结合的,所以可以在右边打上括号

因为 1<4, a<b 结果为true, 所以表达式的值是问号后的第一个值,也就是a的值:1追问

加上括号 (a<b)?a:(c<d?c:d)
先判断后面:(c<d?c:d) 求cd中最小值.可知为2
再判断(a<b)?a:2; a<b 为真,所以表达式为a 既为1;
是这样说的吗?

第2个回答  2013-03-11
这是一个运算优先级的问题,你要是在a:后面加括号应该就明白了。不过在实际运用中这种小聪明影响他人阅读,容易出错并不可取。
第3个回答  2013-03-11
加上括号 (a<b)?a:(c<d?c:d)
先判断后面:(c<d?c:d) 求cd中最小值.可知为2
再判断(a<b)?a:2; a<b 为真,所以表达式为a 既为1;
相似回答