gpt4 book ai didi

c++ - return 语句中可以省略 return 关键字吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:09:43 26 4
gpt4 key购买 nike

我最近在这个 Apache Axis tutorial example. 中看到了下面的一段代码

int main()
{
int status = AXIS2_SUCCESS;

axutil_env_t *env = NULL;
axutil_allocator_t *allocator = NULL;
env = create_environment();

status = build_and_serialize_om(env);

(status == AXIS2_FAILURE)
{
printf(" build AXIOM failed");
}

axutil_env_free(env);

0;
}

我不明白的是最后的0;
那个 return 语句没有 return 关键字吗?

我尝试使用下面的代码在 Visual Studio 中对此进行测试。

int main()
{
0; // in the second run, replaced 0 with 28
}

两个程序都运行没有任何问题。但是 echo %ERRORLEVEL% 在Windows 命令行为两者返回 0。

但是下面这段代码

int add()
{
0;
}

原因

Error 1 error C4716: 'add' : must return a value

我知道返回值 0 是为 main() 隐式添加的。

我对包含 return 关键字完全没有问题,但我将 Axis2/C 库移植到 C++ 项目。而且有很多例子我遇到 0;

的地方

为什么上述语法会导致这种未定义的行为?

最佳答案

在 C++ 中,return 可以省略 main() 中,在返回 void 的函数中,以及在构造函数和析构函数中。在前一种情况下,main() 自动返回 0。在您的情况下,语句 0; 是句法正确的语句,被评估为空操作,因此编译器基本上忽略了它。

关于c++ - return 语句中可以省略 return 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33909541/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com