关于返回语句,Microsoft Visual Studio 文档说
句法:
返回表达式;
其中表达式被标记为可选。它继续
表达式的值(如果存在)将返回给调用函数。如果省略表达式,则函数的返回值是未定义的。
这很清楚,但另一方面,存在空表达式的概念。这让我很困惑。考虑空表达式不是什么都没有,而是一个空的表达式,我会认为如果我们有一个函数
void foo(void)
{
return;
}
那么表达式 foo() 可以在任何允许空表达式的地方使用。例如,代码的行为
unsigned int i=0;
for(foo();i<10;i++) printf("%u",i);
将被定义。我知道这可能没有什么实际意义,但我想了解为什么在这种情况下,空表达式不是表达式。