以下c语句未通过编译器.error是“返回前的预期表达式”。
int max( int a,int b)
{
a>b?return a:return b;
}
是的,我知道我可以写这个以寻找最大值
return a>b?a: b;
这是非常好的,并将完美运行。 但我的问题是第一个代码究竟是什么问题。为什么我们在三元opoerator中使用return,虽然我们可以在那里很容易地使用函数调用?
提前感谢!!!
答案 0 :(得分:26)
C语法说''后面的东西'?并且':'必须是表达式 - return不是表达式,它是一个声明。
答案 1 :(得分:10)
三元的操作数?:是表达式。 return语句是一个语句,而不是表达式。
答案 2 :(得分:6)
三元表达式的第二和第三部分应该产生值,而不是像示例中的return语句。
答案 3 :(得分:6)
?:
是一个操作符而不是一个控制流构造,因此操作数的整个内容必须是一个表达式,而返回语句(或任何语句)都不是有效的子表达式。
?:
不仅仅是if-else
的简写(它是一个控制流构造);它在语义上是不同的。
if( a > b ) return a; else return b;
另一方面,是你想要做的,并且完全有效(如果风格上可能是不明智的)。
答案 4 :(得分:1)
三元运算符需要表达式,return是一个声明。
有关条件运算符here的更多信息。