在C中使用三元运算符最多两个整数

时间:2015-07-10 01:43:24

标签: c max ternary-operator

有没有更好的方法在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);
}

但它给了我一个错误

3 个答案:

答案 0 :(得分:4)

条件运算符(是的,它有一个名字!)用于构建表达式,所以你必须在需要表达式的地方使用它 - 例如,return语句的表达式:

return b < a ? a : b;

答案 1 :(得分:2)

return是一个陈述,而不是表达。它不能在表达式的中间使用。

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

所以它应该是:

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

答案 2 :(得分:2)

您可以做的一项改进是创建函数inline

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

另见An Inline Function is As Fast As a Macro