C语言条件运算符(?:)的用法(非常详细,附带示例)
条件运算符也称三目运算符,因为它是C语言中唯一需要 3 个操作数的运算符。条件运算符的基本用法如下:
条件运算符允许我们在一行代码中执行条件判断并返回结果,一般用来替代简单的 if else 语句。
例如求两个数中的最大值,用 if else 语句可以写作:
1) 条件运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符,因此
2) 条件运算符
3) 条件运算符的结合方向是自右至左,也就是先计算右边的表达式,再计算左边的表达式。例如:
示例2:使用条件表达式来决定调用哪个函数。
condition ? expression1 : expression2
条件运算符的求值规则为:如果 condition 为真(非零值),则以 expression1 的值作为整个表达式的值,否则以 expression2 的值作为整个表达式的值。条件运算符允许我们在一行代码中执行条件判断并返回结果,一般用来替代简单的 if else 语句。
例如求两个数中的最大值,用 if else 语句可以写作:
if(a>b){ max = a; }else{ max = b; }改用条件运算符以后的写法为:
max = (a>b) ? a : b;该语句的意思是:如果 a>b 成立,则把 a 作为条件表达式的结果,并赋值给 max;否则,把 b 作为条件表达式的结果,并赋值给 max。
几点说明
使用条件表达式时,还应注意以下几点:1) 条件运算符的优先级低于关系运算符和算术运算符,但高于赋值运算符,因此
max = (a>b) ? a : b;
可以去掉括号写为:
max = a>b ? a : b;
2) 条件运算符
?
和:
是一对运算符,不能分开单独使用。3) 条件运算符的结合方向是自右至左,也就是先计算右边的表达式,再计算左边的表达式。例如:
a>b ? a : c>d ? c : d;应理解为:
a>b ? a : ( c>d ? c : d );这也是条件表达式嵌套的情形,即其中的某个子表达式又是一个条件表达式。
综合示例
示例1:使用条件运算符输出两个数中的较大者。#include <stdio.h> int main() { int a, b; printf("输入两个整数:"); scanf("%d %d", &a, &b); printf("较大的数字是:%d\n", a > b ? a : b); return 0; }运行结果:
输入两个整数:15 73↙ 较大的数字是:73
示例2:使用条件表达式来决定调用哪个函数。
#include <stdio.h> void success(){ puts("Succeed!"); } void fail() { puts("Failed!"); } int main() { int isOK = 1; // 1 表示真,0 表示假 isOK ? success() : fail(); return 0; }运行结果:
Succeed!