条件运算符(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语言能起到一定的帮助作用。