条件运算符由“?”和“:”两个运算符组成,有三个运算对象。由条件运算符组成的表达式称为条件表达式,其格式为:
表达式1?表达式2:表达式3
格式说明:
(1)条件表达式的计算过程是:如果表达式1的值为真,则以表达式2的值作为整个表达式的值,否则以表达式3的值作为整个表达式的值。
(2)表达式1的类型可以与表达式2和表达式3的类型不同。例如,x>90?‘A’:‘B’,当x=100时,x>90为真,表达式的值为‘A’。当x=80时,x>90为假,表达式的值为‘B’。表达式2和表达式3的类型也可以不同,此时条件表达式的值的类型为二者中精确度较高的类型。例如,x>90?1:1.2,当x=100时,表达式的值为1.000000。
(3)表达式2和表达式3不仅可以是数值表达式,还可以是赋值表达式或函数表达式。例如,x>90?printf(“%c”,‘A’):printf(“%c”,‘B’)。
(4)条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。因此条件表达式通常用于赋值语句之中。例如,max=(a>b?a:b);表示如果a大于b,则把a的值赋给max,否则,就把b的值赋给max。(www.xing528.com)
(5)条件运算符的结合方向是自右至左。例如,a>b?a:c>d?c:d,等价于a>b?a:(c<d?c:d),该表达式是条件表达式的嵌套,即其中的表达式3又是一个条件表达式。设a=1,b=2,c=3,d=4,先计算表达式c<d?c:d,由于c>d成立,所以结果为c的值3;再计算表达式a>b?a:3,由于a>b不成立,所以结果为3。
【例2-21】程序li2_4_8。
【程序说明】
(1)语句“(ch1>='a'&&ch1<='z')?printf("%c",ch1-32):printf("%c",ch1);”是判断输入的字符变量ch1的值是不是小写字母,如果是,则输出其对应的大写字母,否则就输出原值。本例中ch1的值为c,所以输出大写的字母C。
(2)语句“(ch2>='a'&&ch1<='z')?printf("%c\n",ch2-32):printf("%c\n",ch2);”是判断输入的字符变量ch2的值是不是小写字母,如果是则输出其对应的大写字母,否则就输出原值。本例中ch2的值为!,所以输出!。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。