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