C语言条件运算符(?:)的用法(非常详细,附带示例)

 
条件运算符也称三目运算符,因为它是C语言中唯一需要 3 个操作数的运算符。条件运算符的基本用法如下:

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!

总结

本文详细讲解了C语言条件运算符的常见用法,并附带了几个示例进行演示。对于简单的判断,条件运算符是一个很好的选择;但对于复杂的逻辑,使用传统的 if else 语句可能更合适。