//第一个程序段
#include<stdio.h>
int main()
{
int a,b,c,k;
a=2;b=3;c=4;
k=(a<b)?((a<c)?a:c):((b<c)?b:c);
printf("%d,%d,%d,%d\n",a,b,c,k);
}//输出结果2342
对于k=(a<b)?((a<c)?a:c):((b<c)?b:c);这个是嵌套。从右向左看条件运算符,
一个一个看。
对于(a<b)?((a<c)?a:c):((b<c)?b:c)
可以转换为if-else语句
if(a<b)
if(a<c) k=a;
else k=c;
else if(b<c)
k=b;
else
k=c;
//第二个程序段
#include<stdio.h>
int main()
{
int a,b,c,k;
a=2;b=3;c=4,d=5;
k=a<b?c:d>b?a:b;//等价于k=a<b?c:(d>b?a:b);
printf("%d,%d,%d,%d\n",a,b,c,k);
}
//先算括号里的,输出为k=4,a=2,b=3,c=4;
总结:条件运算符中的嵌套是一个条件运算在另一个条件运算中,
是一个条件运算符在其中的一个表达式中,一般不带括号。
一般就是这俩种情形,遇到复杂的就要想到结合性是从右到左,
就是先算右边的再算左边的,有括号先算括号里的,
这时就不用管条件运算符了,因为,括号的优先级最高。
//
条件运算符的优先级高于赋值语句。
max=(a>b)?a:b;可改为max=a>b?a:b;
//
x=a<b?a:b;等价于下面的:
if(a<b)
x=a;
else
x=b;
条件运算符的嵌套问题
猜你喜欢
转载自blog.csdn.net/weixin_46828943/article/details/113785798
今日推荐
周排行