【发布时间】:2021-04-24 15:12:04
【问题描述】:
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 代码。有什么可能的原因吗?
【问题讨论】:
-
请将代码添加为文本,而不是图像。
-
控制流关键字,如@987654323@ 不应在表达式中使用。应该写在前面。
-
"...当它不显示错误时,它没有显示“expected an expressionC/C++(29)”错误,那是什么问题?这是笔误吗?
-
return (n==0)?(0.0):(1.42); -
return 0.0、return 1.0等是语句,而不是表达式。正如错误消息所说,三元运算符需要表达式,即在a ? b : c中,a、b,和c必须都是有效的表达式。当表达式也使用三元运算符时也是如此。简单的方法是将return关键字移到外面,并删除所有其他使用它的地方,即return (n == 0) ? (0.0) : ((n == 1) ? 1.0 :
标签: c++ operator-keyword ternary