C 返回前的预期表达式

C 返回前的预期表达式,c,C,以下c语句未通过编译器。错误为“返回前的预期表达式” 是的,我知道我可以写这篇文章来找到max作为 return a>b?a: b; 这是非常好的,将运行完美。 但我的问题是第一个代码的确切问题是什么。为什么我们不能在三值运算器中使用return,尽管我们可以很容易地在那里使用函数调用 提前感谢 C语法说“?”和“:”后面的东西必须是表达式-return不是表达式,而是语句。三元表达式的第二部分和第三部分应该产生值,而不是像您的示例中那样是return语句。三元:

以下c语句未通过编译器。错误为“返回前的预期表达式”

是的,我知道我可以写这篇文章来找到max作为

            return a>b?a: b;
这是非常好的,将运行完美。 但我的问题是第一个代码的确切问题是什么。为什么我们不能在三值运算器中使用return,尽管我们可以很容易地在那里使用函数调用


提前感谢

C语法说“?”和“:”后面的东西必须是表达式-return不是表达式,而是语句。

三元表达式的第二部分和第三部分应该产生值,而不是像您的示例中那样是return语句。

三元:的操作数是表达式。返回语句是一个语句,而不是一个表达式。

?:
是一个运算符而不是一个控制流构造,因此操作数必须是一个表达式,返回语句(或任何语句)都不是有效的子表达式

?:
不仅仅是
if else
的缩写(这是一个控制流构造);它在语义上是不同的

if( a > b ) return a; else return b;

另一方面,这是您试图做的,并且完全有效(如果在风格上可能不明智)。

三元运算符需要表达式,return是一个语句


更多关于条件运算符的信息。

27个问题,其中没有一个被接受,肯定有几个问题得到了满意的回答?如此低的接受度可能会导致人们不回答你的问题。正如您所知,gcc中的错误是“返回前的解析错误”
if( a > b ) return a; else return b;