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。

由于三元运算符,递归函数现在很简单。

希望这给您另一个理由更频繁地使用三元运算符!