原文:Ternary Operator in C Explained
开发者们可以使用三元运算符实现多个条件的判断,以取代较长的 if-else 条件语句。
三元运算符有三个参数:
- 第一个是一个比较参数
- 第二个是正确比较后的结果
- 第三个是错误比较后的结果
把三元运算符看作是写 if-else 语句的一种速记方法,会有帮助。下面是一个使用 if 和 else 进行简单决策的例子。
int a = 10, b = 20, c;
if (a < b) {
c = a;
}
else {
c = b;
}
printf("%d", c);
这个例子需要十多行,但这并不是必须的。你可以使用三元运算符,只用三行代码就能写出上述程序。
语法
condition ? value_if_true : value_if_false
如果条件 condition
符合,语句的结果是 value_if_true
,反之,结果是 value_if_false
。
下面是使用三元运算符改写上述例子。
int a = 10, b = 20, c;
c = (a < b) ? a : b;
printf("%d", c);
上述例子的输出结果是:
10
c
的值应该是 a
,因为条件 a < b
为真。
记住,参数 value_if_true
和 value_if_false
必须是相同的类型,而且它们必须是简单的表达式,而不是完整的语句。
三元运算符可以像 if-else 语句一样被嵌套。考虑一下下面的代码:
int a = 1, b = 2, ans;
if (a == 1) {
if (b == 2) {
ans = 3;
} else {
ans = 5;
}
} else {
ans = 0;
}
printf ("%d\n", ans);
下面是使用嵌套三元运算符重写的上面的代码:
int a = 1, b = 2, ans;
ans = (a == 1 ? (b == 2 ? 3 : 5) : 0);
printf ("%d\n", ans);
上面两个例子的结果都应该是:
3