接着上一篇继续哈:

格式:表达式1?表达式2∶表达式3
功能:判断表达式1的值,如果成立就执行表
达式2,否则就执行表达式3
使用场合:若在if语句中,当被判别的表达式的
值为“真”或“假”时,都执行一个赋值语
句且向同一个变量赋值时,可以用一个
条件运算符来处理。
例:
if(a>b)max=a;
elsemax=b;
当a>b时将a的值赋给max,当a≤b时将b的值赋给max,
可以看到无论a>b是否满足,都是向同一个变量赋值。
可以用下面的条件运算符来处理:
max=(a>b)?a∶b;
说明:
(1)条件运算符的执行顺序:先求解表达式1,若为非0(真)
则求解表达式2,此时表达式2的值就作为整个条件表达式
的值。若表达式1的值为0(假),则求解表达式3,表达
式3的值就是整个条件表达式的值。
(2)条件运算符优先级高于赋值运算符,低于关系运算符
和算术运算符。
(3)条件运算符的结合方向为“自右至左”。
(4)“表达式2”和“表达式3”不仅可以是数值表达式,还可以
是赋值表达式或函数表达式。
(5)条件表达式中,表达式1的类型可以与表达式2和表达
式3的类型不同。
例:输入一个字符,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符。
#include<stdio.h>
void main()
{char ch;
scanf("%c",&ch);
ch=(ch>='A'&&ch<='Z')?(ch+32):ch;(如果字符变量ch的值为大写字母,则条件表达式的值为(ch+32),即相应的小写字母。如果ch的值不是大写字母,则条件表达式的值为ch,即不进行转换。)
printf("%c\n",ch);
}