C/C++中的三元运算符
时间:2020-02-23 14:30:07 来源:igfitidea点击:
在本文中,我们将了解C/C++中的三元运算符。
三元运算符(?:
)是非常有用的运算符,与if-else语句非常相似。
对于程序员来说,这是一个有用的选项,可以避免使用嵌套的if-else条件使代码混乱。
让我们通过一些说明性示例快速使用这个简单的运算符!
三元运算符
在介绍三元运算符之前,让我们看一下简单的if-else语句的格式。
if (condition) { variable = expression1; } else { variable = expression2; }
尽管这很简单,但将其写成一行并直接分配给一个变量可能更方便!
我们可以通过三元运算符来实现。
三元运算符的工作方式与上面的if-else块相同。
variable = (condition != 0) ? expression1 : expression2;
这就是说,如果条件成立,变量将被赋予expression1的值。
否则,将使用" expression2"的值。
因此,这基本上与原始的" if-else"语句相同。
使用三元运算符-一些示例
考虑下面的程序,它将基于奇数还是偶数将变量分配给-1。
#include <stdio.h> int main() { int a = 10; int b = 5; int c = (a % 2 == 0) ? a : -1; int d = (b % 2 == 0) ? b : -1; printf("a = %d, c = %d\n", a, c); printf("b = %d, d = %d\n", b, d); return 0; }
输出
a = 10, c = 10 b = 5, d = -1
如您所见,由于a是偶数,所以现在对第一部分(在"?"之后)进行评估并将其分配给c。
在第二种情况下,由于b
为奇数,因此第二部分(在:
之后)现在被评估并分配给d。
三元运算符还使编写递归函数非常容易阅读。
考虑下面的程序,该程序使用三元运算符从1开始使用递归函数查找斐波那契序列!
如果n <= 1,则递归函数将返回1,否则将返回fib(n-1)+ fib(n-1)!
#include <stdio.h> int fibonacci(int n) { return (n <= 1) ? 1 : fibonacci(n-1) + fibonacci(n - 2); } int main() { int val = fibonacci(10); printf("Starting from 1, fibonacci(%d) = %d\n", 10, val); return 0; }
输出
Starting from 1, fibonacci(10) = 89
如果计算出来,您确实可以验证1之后的第十个斐波那契数是89。
由于三元运算符,递归函数现在很简单。
希望这给您另一个理由更频繁地使用三元运算符!