c语言中a<b?a:b<b?a:c<d?a:d;是怎么计算的

发布网友

我来回答

4个回答

热心网友

计算时应该这样(b!=c+d)<=(a*b-d)前面那个括号内应先算非b、由于b为真、则非b为假。所以b!=0,而0肯定不等于(c+d)所以前面的括号内为假!整体等于0,后面括号内可以计算等于30。0肯定小于30、所以结果为真!

热心网友

#include<stdio.h>
void main()
{ int a=4,b=3,c=2,d=1,e;
e=a<b?a:b<b?a:c<d?a:d;
printf("%d\n",e);
}
#include<stdio.h>
void main()
{ int a=1,b=2,c=3,d=4,e;
e=a<b?a:b<b?a:c<d?a:d;
printf("%d\n",e);
}

由这两个程序不难看出 x<y?x:y是由左向右运行的
r=a<b?a:b
如果a<b的话 r=a;否则就为r=b;
就是这样一直判断下去就可得到整个式子的值了

热心网友

?:三元表达式的运算顺序是从右至左的;
上面的运算是先算:c<d?a:d
楼上说得对,只要加上适当的符号就容易理解了。

热心网友

这个条件表达式添上适当的括号就行了a<b?a:(b<b?a:(c<d?a:d))追问那c<d?a:d是怎样计算的?是在cd中求最小的还是在ad中?

追答这个你可以这样读:c大于d吗?是,则这个表达式的值为a;否,则这个表达式的值为d。它并不是单纯的在cd中或ab 中求最大最小,而是在一定的条件下取值。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com