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:自己总结的知识点,难免会有纰漏,欢迎各位看官及时指正,小弟感激不尽