第1个回答 2018-02-28
a=1, b=2, c=3,d=4,求:a<b?a:c<d?a:d
(1)先看a<b成立不?如果成立,则值为:a,如果不成立,则值为c<d?a:d的值
现在a=1,b=2,a<b成立,所以结果就是a。
(2)因为a的值是1,所以结果就是:1
(3)如果不成立才计算c<d?a:d,如果成立就不计算后面的这个部分了。
第2个回答 2018-02-28
这个是C语言中的条件运算符(?:)它是对第一个表达式作真/假检测,然后根据结果返回另外两个表达式中的一个。
<表达式1>?<表达式2>:<表达式3>
在运算中,首先对第一个表达式进行检验,如果为真,则返回表达式2的值;如果为假,则返回表达式3的值。
你这个表达式中,a<b 视为表达式1 为真 则返回 表达式2 即 a的值1 ,后面的表达式3就根本没用。
你的表达式可以视为:(a<b)?a:((c<d)?a:d)。表达式1为 a<b,表达式2为a,表达式3为 c<d?a:d。
第3个回答 2015-01-11
从左往右看,因为a<b是正确的,所以返回a,后面的就会执行了。
所以返回1.本回答被提问者采纳
第4个回答 2018-02-28
(a<b)?a:((c<d)?a:d)
等同于
if (a<b)
{
return a;
}else
{
if (c<d)
{
return a;
}else
{
return d;
}
}
所以很明显a<b成立 返回a 也就是返回 1 完了