【问题标题】:Why can't I use return in my ternary expression but I can in a regular if-else statement? [duplicate]为什么我不能在我的三元表达式中使用 return 但我可以在常规 if-else 语句中使用? [复制]
【发布时间】:2019-04-02 22:37:27
【问题描述】:

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

三进制格式:

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

传统:


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

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

【问题讨论】:

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 2016-12-21
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2021-01-14
    相关资源
    最近更新 更多