C语言问题:条件运算符选择题

下列程序段执行后的输出结果是( )

int k=-4,a=3,b=2,c=l;
printf("%d/n",k<a?k:c<b?c:a);

A.1 B.2
C.3 D.4

求算法的思路,不是只要最后答案
不用解释条件运算符的含义。要是解题过程,答案是怎么算出来的

?:这个是三目运算符。
这个是条件表达式,表示如果a为真,则表达式值为b,如果a为假,则表达式值为c

条件表达式具体说明如下
条件语句:
if(a>b) max=a;
else max=b;
可用条件表达式写为
max=(a>b)?a:b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b 赋予max。
使用条件表达式时,还应注意以下几点:
1) 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此
max=(a>b)?a:b
可以去掉括号而写为
max=a>b?a:b
2) 条件运算符?和:是一对运算符,不能分开单独使用。
3) 条件运算符的结合方向是自右至左。
例如:
a>b?a:c>d?c:d
应理解为
a>b?a:(c>d?c:d)
这也就是条件表达式嵌套的情形,即其中的表达式3又是一个条件表达式。

k<a?k:(c<b?c:a)
-4<3正确就是K=4
这个没有答案
K=-4追问

“-4<3正确就是K=4 ” 这句话是什么意思,听不明白

追答

-4<3这个是成立的,就做?后的K。

如果条件本身不成立,就做:后的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-08-18
条件运算符是惟一有3个操作数的运算符,所以有时又称为三元运算符。对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算
x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。一个条件表达式从不会既计算x,又计算y。条件运算符是向右结合的,也就是说,从右向左
分组计算。例如,a?b:c?d:e将按a?b:(c?d:e)执行。
你这个没有答案啊,应该是k=4吧,结果为A
第2个回答  2013-08-19
你可以换成如下方式理解:
if (k<a)
结果为k
else if(c<b)
结果为c
else
结果为a。

这样就很明白了吧。
第3个回答  2013-08-18
k<a?k:(c<b?c)
所以,-4...

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网