【问题标题】:max of two integers using ternary operator in C在C中使用三元运算符的两个整数的最大值
【发布时间】:2015-07-10 01:43:24
【问题描述】:

有没有更好的方法来使用 C 中的三元运算符返回两个整数的最大值?

这就是我现在所拥有的

int max(int a, int b)
{
 int big = 0;
 big = (a>b)?a:b;

 return big;
}

但我想写成这样

#include <stdio.h>

int main(void)
{
 printf("%d\n",fun(5,4));

 return 0;
}

int fun(int a, int b)
{
 (a>b)?(return a:return b);
}

但它给了我一个错误

【问题讨论】:

  • “它给了我一个错误” - 因为它不是有效的 C。return a &gt; b ? a : b; 有什么问题
  • 你不能在三元的第二部分和第三部分加上括号。
  • @WhozCraig,在我找到解决方案后才回来,并看到它已得到解答。谢谢。

标签: c max ternary-operator


【解决方案1】:

条件运算符(是的,它有名字!)用于构建表达式,因此您必须在需要表达式的地方使用它——例如,return 语句的表达式:

return b < a ? a : b;

【讨论】:

    【解决方案2】:

    您可以做的一个改进是使函数inline

    inline int max(int a, int b) {
        return a > b ? a : b;
    }
    

    另见An Inline Function is As Fast As a Macro

    【讨论】:

      【解决方案3】:

      return 是一个语句,而不是一个表达式。不能用在表达式中间。

      另外,三元的两个返回值必须是单独的表达式;将它们包裹在一组括号中使它们只是一个表达式。

      应该是这样的:

      int fun(int a, int b) {
          return (a > b) ? a : b;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-27
        • 2020-11-23
        • 2014-11-13
        • 1970-01-01
        • 1970-01-01
        • 2012-04-02
        • 2023-03-05
        • 1970-01-01
        相关资源
        最近更新 更多