# 三目运算符
## 条件运算符概念
- 条件运算符是C语言的唯一的三目运算符,即它需要3个数据或表达式构成条件表达式
- 格式:
+ 表达式1?表达式2(结果A):表达式3(结果B)
- 求值规则:
+ 如果表达式1为真,三目运算符的运算结果为表达式2的值(结果A),否则为表达式3的值(结果B)
示例:
```
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
printf("max = %d", max); // 输出结果: 20
```
等价于:
```
int a = 10;
int b = 20;
int max = 0;
if(a>b){
max=a;
}else {
max=b;
}
printf("max = %d", max);
```
## 注意点
- 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
```
例如:
max=(a>b)? a:b;
可以去掉括号而写为:
max=a>b?a:b;
```
- 条件运算符?和:是一对运算符,不能分开单独使用。
- 条件运算符的结合方向是从右至左
例如:
```
a>b?a:c>d?c:d;
// 应理解为:
a>b?a:(c>d?c:d)
```
## 练习
问:用户从键盘上输入三个整数,找出最大值吗,然后输入最大值。
思路:
1. 定义变量 num1,num2,num3,max
2. 先比较 num1 和 num2,比较的结果存放到max
3. max和第三个数比较
```
#include<stdio.h>
int main(){
int num1, num2, num3;
printf("请输入三个整型,使用逗号分割,并以回车结束输入\n");
scanf("%i,%i,%i",&num1, &num2, &num3);
int temp = num1 > num2 ? num1 : num2;
int resault = temp > num3 ? temp : num3;
printf("你输入的最大整型是:%i\n\n" , resault);
return 0;
}
```