一道C语言题,“若整型变量a、b、c、d中的值依次为:1、4、3、2,则条件表达式a<b?a:c<d?c:d的值?”

有具体说明?

我来简单的说下,这个题考察的是X ? Y : Z
如果X的正确的,则答案取Y。相反如果X是错的,就取Z

对于你这道题,用括号表示下嵌套就是
(a<b)?a:((c<d)?c:d)
把值带进去就是
(1<4)?1((3<2)?3:2)

所以很明显,答案就是1(因为1<4正确,所以后面的((c<d)?c:d)的不用计算了),我用MyEclipse验证了一下是对的

祝愉快~~
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-01-20
只要了解条件表达式的组成就不难明白

a<b?a:c

当问号前(a<b)为真(非0)就取a,否则c

符号优先级都是从左至右

翻译为

if(a<b) return a;
else {if(c<d)return c; else return d;}
或者
if(a<b) return a;
else if(c<d) return c:
else return d;
第2个回答  2010-01-20
a<b?a:c<d?c:d
?运算符是右结合性=》1<4?1:(3<2?3:2)=>1〈4?1:2=〉1
1<4?1:(3<2?3:2)=>1
结果为2
第3个回答  2010-01-20
从右往左运算
c<d?c:d=2
a<b?a:2=1
所以为1
第4个回答  2010-01-20
a<b?a:(c<d?c:d)
a<b?a:2
1

值为1
相似回答