有没有更好的方法在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);
}
但它给了我一个错误
答案 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;
}