对于被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值的if语句,可以替换成条件表达式。
eg:if(a>b) 等价于
max=a; ————> max=(a>b)?a:b;
else
max=b;
(a>b)?a:b;是条件表达式,“?”是条件运算符。
一.条件运算符和条件表达式
条件运算符由两个符号(?和:)组成,必须一起使用,要求有三个操作对象,称为三目(元)运算符,它是C语言中唯一的一个三目运算符,属于右结合(从右往左)。
(注:右结合:条件运算符,赋值运算符,单目运算符;
算术运算符左结合(自左至右),复制运输右结合,其他复杂的遇到时查一下即可)
条件表达式的一般形式为表达式1?表达式2:表达式3
表达式1值为真(非0),接表达式2;表达式1值为假(0),接表达式3(1真2,1假3)
注:(1)条件运算符优先于赋值运算符,因此赋值表达式的求解过程是先求解条件表达式,再将它的值赋给max(条件运算符优先级倒数第三,仅高于赋值运算符和逗号运算符);
逗号运算符:eg:a+5,b+c,a*b+c;两个逗号将表达式分为三个子表达式,整个表达式计算结果等于最后一个子表达式的结果。
(2)表达式2和3不仅可以是数值表达式,还可以是赋值表达式或函数表达式
二.应用代码
输入一个字符,判别它是否为大写字母,如果是,将它转化为小写字母;如果不是,不转换。然后输出最后得到的字符。
#include<stdio.h>
int main()
{
char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):(ch);
printf("%c\n",ch);
return 0;
}