📑三目运算符
- 三目运算符也叫条件运算符、三元运算符,是由一个问号和一个冒号组成。
- 语法:
表达式1?表达式2:表达式3;
- 语义:
- 先执行表达式1,如果表达式1的结果如果为真,那么执行表达式2,并且这个整体的运算式的结果是表达式2的结果;如果表达式1的结果如果为假,执行表达式3,运算式的结果是表达式3的结果。
int a,b,c; a=7; b=6; c=(a>b)?a:b;
- 等同于
if (a>b) c=a; else c=b;
- 三目运算符可以嵌套使用,我不建议使用三目运算符,过于复杂的三目运算难以理解。
📑题目要求
三数最大值
输入三个整数,求出最大值并输出。以下选项中的条件表达式,哪一项放在(1)处无法求出最大值。
#include <stdio.h> int main(int argc, char** argv) { int a, b, c, max; printf("请输入3个整数:"); scanf("%d,%d,%d", &a, &b, &c); (_____1_____) printf("3个整数中的最大的是:%d", max); return 0; }
条件表达式的基本逻辑:
- A、max = a > b ? a > c ? a : c : b > c ? b : c;
- B、max = (c > ((a > b) ? a : b)) ? c : ((a > b) ? a : b);
- C、max = c > (a > b) ? a : (b ? c : (a > b)) ? a : b;
- D、max = a > b ? (a > c ? a : c) : (b > c ? b : c);
📑题目分析
A选项:
A选项包括了三个三元表达式,一个嵌套两个,还是很好理解的,假设a比b大,a则继续与c比较,反之b比a大则b继续与c比较,进而可以判断出最大值,因此A选项对。
B选项:
B选项也是包括了三个三元表达式,一个嵌套两个,只不过多了些括号的使用,要注意优先级的处理。首先从左往右看,先看第一部分可以得出,在第一个三元表达式中判断a和b谁大,可以得出c>a>b或c>b>a的条件,如果条件为true,c为最大值,反之进入第二部分,对a和b的大小进行判断,最后得出a或b其中一个为最大值,因此B选项正确。
C选项:
C选项也是包括了三个三元表达式,一个接着一个嵌套,先对c > (a > b)进行分析,先判断a和b的大小,可以得出c>a>b或c>b>a的条件,假设条件为true,直接输出表达式2为a,假设条件为false,走表达式3的嵌套三元表达式,输出结果还是a,因此C选项不正确,无法求出最大值。
D选项:
D选项跟B选项很像也是包括了三个三元表达式,一个嵌套两个。从左到右看,首先a大于b,a与c比较大小,a大输出a,反之输出c。然后a小于b,b与c比较大小,b大输出b,反之输出c,因此B选项正确。
📚C语言——习题、知识点案例,持续更新🔥
🎯点赞收藏,防止迷路🔥