若 a=3,b=4,c=5,d=6,则表达式a<b?a:c<d?c:d的值是多少?希望能详细讲解谢谢!

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:17:46
那个是对的

这是条件运算符.是C语言唯一的3目运算符,一般形式如下:
表示式1?表达式2:表达式3
执行过程:
先求解表达式1,
若真,则把表达式2的值作为整个条件表达式的值,执行结束,
若假,则把表达式3的值作为整个条件表达式的值,执行结束.

而条件运算符的结合方向是自右至左.所以表达式a<b?a:c<d?c:d可以写成
表达式a<b?a:(c<d?c:d)
先求c<d?c:d表达式的值,按刚才的执行过程,先求解表达式1,
c=5,d=6,c<d为真,取c的值作为表达式的值,
即(c<d?c:d)的值为5.

表达式a<b?a:(c<d?c:d)变成
表达式a<b?a:c
执行a<b为真,所以取a的值作为表达式的值,

所以整个条件表达式a<b?a:c<d?c:d的值为3

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

从右往左算
c<d?c:d 因为c<d成立,所以该式子的值为c,就是5

所以原式就是
a<b?a:5
因为a<b成立,所以该式子的值是a,就是3

所以整个式子就是3了

首先你要明白三目运算符f=a<b?a:b这就话的意思是如果a<b那么f=a,否则f=b

假如f=a<b?a:c<d?c:d

则第一步:a<b成立,所以f=a=3,后面不用看了

假如a=4而b=3则有a<b不成立,那么f=c<d?c:d = c(因为c<d成立) = 5

首先,你学习C的时候,要知道运算的次序,有的从左向右,有的从右向左;这题是多个三目运算符,是从右向左,所以应该从……看别人给你的解答吧,真的很简单. 结果是:5。所以,FAMDESTINY是对的。

条件运算符的结合方向是自右至左,先算c<d?c:d,再算a<b?a:c,结果是3