C语言——三目运算符的进阶用法,比较三个或者四个数的大小
一、简介三目运算符
1、三目运算符也叫条件运算符,结合方向是从右至左。
2、三目运算符仅此一个。
3、基本形式: <表达式1> ? <表达式2> : <表达式3>
4、比较原理:表达式1是否为真,如果为真,执行表达式2,否则执行表达式3.
例:a = 4 > 3 ? 1 : 0 ; a的值为1.
5、如果在表达式中含有其他运算符,得考虑符号的优先等级(很重要!最好把表达式都带上括号)
二、三目运算符比较两个数之间的大小
1、基本形式: <表达式1> ? <表达式2> : <表达式3>
2、原理:在<表达式1>中存放判断条件,如果结果为真就输出<表达式2>,假就输出<表达式3>
例:a = 4 > 3 ? 1 : 0 ; a的值为1(过于简单,不做赘述)
三、三目运算符比较三个数之间的大小
直接上例子(最朴素的办法,但是最容易理解)
//用三目运算符比较三个数的大小
#include<stdio.h>
int main()
{
int a = 3,b = 4,c = 5,max1,max2,max3;//max用来存储最大的数字
//有三种不同的写法:
//max1的原理:先求A和B的最大值,再去和c比较
//max2的原理:先让A和B比较,A大就让A和C比较,反之B和C比较
//max3的原理:先让A和B比较,<表达式1>为真(A大)就让A和C比较,反之B和C比较
max1 = (a > b ? a : b) > c ? (a > b ? a : b) : c ;
max2 = a > b ? (a > c ? a : c) :(b > c ? b : c);
max3 = (a > b ? a : b) ? (a > c ? a : c) : (b > c ? b : c);
printf("max1:%dn",max1);
printf("max2:%dn",max2);
printf("max3:%dn",max3);
}
四、三目运算法比较四个数的大小(相对三,更容易理解)
上硬菜(看懂了上面,下面的嵌套也是一样的)
#include<stdio.h>
int main()
{
int a = 1 ,b = 2 , c = 3 , d = 4 ,z;
z = ((a < b ? a : b) < (c < d ? c : d)) ? (a < b ? a : b) : (c < d ? c : d);
printf("z:%dn",z);
}
在往上面,还是一样的嵌套方法。可以一直套娃下去(套太多了,自己容易先晕)
PS:自己总结的知识点,难免会有纰漏,欢迎各位看官及时指正,小弟感激不尽