gpt4 book ai didi

c++ - 声明为返回 int 的函数不返回任何内容。这是未定义的行为吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:35 29 4
gpt4 key购买 nike

这是 C++ 中的有效函数:

int f()
{
if(false)
{
return 42;
}
}

以下定义导致 UB:

int x = f(); // return value used

问题:下面的表达式语句会导致UB吗?

f();

非常欢迎从标准中引用。

最佳答案

C++03 §6.6.3/2:

从一个函数的末尾流出相当于一个没有值的返回;这会导致值返回函数出现未定义的行为。

所以这是一个函数本身的 UB。

顺便说一句,gcc 给你一个很好的警告,指向这个 UB:

In function 'int f()':
Line 7: warning: control reaches end of non-void function

关于c++ - 声明为返回 int 的函数不返回任何内容。这是未定义的行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4090105/

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