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

Why can't I use return in my ternary expression but I can in a regular if-else statement?

本文关键字:我可以 常规 语句 if-else return 三元 不能 为什么 表达式 我的      更新时间:2023-10-16

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

三元格式:

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

传统的:


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

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

您可以在条件形式中使用阶乘,但不能使用 return . return 是一个语句,而条件运算符需要表达式。方便的是,条件运算符本身是一个表达式,它允许您执行此操作。

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

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

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