c++ 三元运算符期望表达式C/C++(29)

问题描述

1

double recursively(int n) {
    (n==0)?(return 0.0):((n==1)?(return 1.0):(return 2*recursively(n-1)+recursively(n-2)));
}

当我在递归函数中使用三元运算符时,它没有显示“预期的表达式 C/C++(29)”错误。我正在使用 Visual Studio 代码。有什么可能的原因吗?

解决方法

正式名称是“条件运算符”,它是一个产生值的表达式 - a ? b : c 不是 if (a) b; else c; 的简写,而是值 b 和 { 之间的选择{1}}。

重写以返回表达式的值:

c

return n==0 ? 0.0 : (n==1 ? 1.0 : 2*recursively(n-1)+recursively(n-2)); 周围的括号在技术上是多余的,但更易于阅读。
我有时会像这样断行:

n == 1 ? ...