📅  最后修改于: 2023-12-03 15:13:44.231000             🧑  作者: Mango
C/C++ 中的三元运算符是一种非常强大的表达式,通常形式为:
condition ? true_expression : false_expression;
其中,condition 是一个德尔布尔表达式(即返回 true 或 false),true_expression 和 false_expression 是两个表达式。如果 condition 的值为 true,则返回 true_expression 的值;否则返回 false_expression 的值。
和其他表达式一样,三元运算符的返回值可以被忽略掉,即不进行任何操作。这时,三元运算符只用来做一个简单的选择器。
a > b ? a : b; // 返回 a 和 b 中的最大值
当 true_expression 和 false_expression 的类型不同时,编译器会进行类型转换。通常情况下,编译器会将宽度小的整数类型转换为宽度大的类型,从而保证最终的表达式类型一致。
char c = 0;
int i = 1;
int result = (c != 0) ? c : i; // c 首先被提升为 int 类型,然后再执行
三元运算符是表达式中优先级最低的,通常情况下,我们需要使用圆括号来改变表达式的执行顺序。
int a = 0, b = 1, c = 2;
int result = a ? b : c++; // 此处的执行顺序为 a, b, c++
为了避免出现一些令人迷惑的结构,我们通常建议将三元运算符用圆括号括起来。
int result = a ? b : (c++); // 此处的执行顺序为 a, b, c
在 C/C++ 中,我们可以使用递归调用来完成某些复杂的操作。在这种情况下,三元运算符可以用来代替 if 语句。
int factorial(int n) {
return (n <= 1) ? 1 : (n * factorial(n - 1));
}
我们可以使用三元运算符来选择一个数组中的元素,例如:
int a[2] = {1, 2};
int i = 0;
int j = 1;
int result = (i > j) ? a[0] : a[1]; // 返回 a[1]
三元运算符是 C/C++ 中非常强大的表达式之一,它的使用可以方便我们完成许多复杂的操作。在使用三元运算符时,我们需要注意一些细节,例如优先级、类型转换等等。