为什么我不能在我的三元表达式中使用return,但我可以在常规的if-else语句中使用return? [重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在编写一个简单的阶乘函数来练习c ++中的递归。我想用三元格式编写,但它没有工作,所以我先写出来,看看它是否以更传统的方式工作。

三元格式:

   num > 1 ? num * factorial(num-1) : return 1;

传统:


   if (num > 1){
    return num * factorial(num-1);
   }
   else {
    return 1; 
   }

我只是打印应该显示120的factorial(5)的结果。虽然它适用于第二个,但它不适用于第一个。为什么我不能以三元格式使用return?或者,我使用它错了吗?

c++ return-value ternary-operator
1个回答
2
投票

您可以在条件形式中使用factorial,但不能使用returnreturn是一个语句,而条件运算符需要表达式。方便的是,条件运算符本身就是一个表达式,可以让你这样做。

return num > 1 ? num * factorial(num-1) : 1;

请注意,我们将返回整个表达式的结果,而不仅仅是num > 1片段。如果我想用括号多余,我可以这样做,这在语义上是等价的。

return (num > 1 ? num * factorial(num-1) : 1);
© www.soinside.com 2019 - 2024. All rights reserved.