条件运算符(conditional operator)有时候也称为三元运算符(ternary operator,或者trinary operator),因为它是唯一需要 3 个操作数的运算符,条件表达式的一般形式为:

条件 ? 表达式1 : 表达式2

条件运算操作会首先计算条件,然后根据条件的计算结果,再决定要计算两个表达式中的哪一个。条件表达式通常用于赋值语句之中。

其求值规则为:

如果条件表达式为真,整个表达式的值为表达式1的值;

如果条件表达式为假,整个表达式的值为表达式2的值。

条件运算符代表了在程序流中的条件式跳转,因此,有时候可以与 if-else 语句相互替代。

比如:如果我们希望获得两个数中最大的一个,我们可以使用if语句:

 if(a>b){   max = a;   }else{   max = b;   }

上面所描述的if else语句等价于:

max = (a>b)?a:b;

该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max。大家可以认为条件运算符是一种简写的if else,完全可以用if else来替换。

如果你正在学习C/C++遇到瓶颈,迷茫,困惑,那么不妨加入C语言C++学习企鹅圈,跟着前辈一起交流学习,还有一些(源码、项目实战视频、项目笔记,基础入门教程)分享哟!即使是零基础的学习者,都可以一起成长进步。

另外我们使用条件表达式时,还应注意以下几点:

①条件运算符的优先级低于关系运算符和算术运算符,但高于赋值符。因此

max = (a>b)?a:b;

可以去掉括号而写为

max=a>b?a:b;

②条件运算符?和:是一对运算符,不能分开单独使用。

③条件运算符的结合方向是自右至左。比如:

a>b?a:c>d?c:d;

应理解为:

a>b?a:(c>d?c:d);

这也就是条件表达式嵌套的情形,即其中的表达式又是一个条件表达式。

用条件表达式重新编程,输出两个数中的最大值:

   #include <stdio.h>   int main(){   int a,b;   printf("Inputtwonumbers:");   scanf("%d%d",&a,&b);   printf("max=%d\\n",a>b?a:b);   return 0;   }

运行结果:

    Input two numbers:23 45   max = 45

今天C语言中的条件运算符知识就分享到这里啦,希望对大家学习C语言能起到一定的帮助作用。

C语言基础丨运算符之条件运算符(七)_C语言