为什么在三元表达式中不能使用return,而在常规if-else语句中可以使用return呢?

时间:2019-04-02 22:37:28

标签: c++ return-value ternary-operator

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

三元格式:

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

繁体:


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

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

1 个答案:

答案 0 :(得分:2)

您可以在条件格式中很好地使用阶乘,但不能使用returnreturn是一个语句,而条件运算符需要表达式。方便地,条件运算符本身是一个表达式,可以让您执行此操作。

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

请注意,我们返回的是 whole 表达式的结果,而不仅仅是num > 1片断。如果我想在括号中多余,可以这样做,在语义上是等效的。

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