C中使用三元运算符的两个整数的最大值

C中使用三元运算符的两个整数的最大值,c,max,ternary-operator,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)?(ret

在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);
}
#包括
内部主(空)
{
printf(“%d\n”,fun(5,4));
返回0;
}
int fun(int a,int b)
{
(a>b)?(返回a:返回b);
}
但是它给了我一个错误

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

return b < a ? a : b;
返回b
条件运算符(是的,它有一个名称!)用于构建表达式,因此您必须在需要表达式的地方使用它–例如,return语句的表达式:

return b < a ? a : b;
返回b
return
是一条语句,而不是表达式。它不能在表达式的中间使用。< /P> 此外,三元函数的两个返回值必须是单独的表达式;将它们包装在一组括号中,使它们成为一个表达式

因此,它应该是:

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

return
是一条语句,而不是表达式。它不能在表达式的中间使用。< /P> 此外,三元函数的两个返回值必须是单独的表达式;将它们包装在一组括号中,使它们成为一个表达式

因此,它应该是:

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

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

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

另请参见。

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

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

另请参见。

“它给了我一个错误”-因为它不是有效的C。
返回a>b有什么问题?a:b不能在三元数的第二部分和第三部分用括号括起来。@WhozCraig,在我找到答案后回来,看到答案了。谢谢。“它给了我一个错误”-因为它不是有效的C。返回a>b有什么问题?a:b不能在三元数的第二部分和第三部分用括号括起来。@WhozCraig,在我找到答案后回来,看到答案了。谢谢