C++ 如果指定返回类型为int的函数没有任何返回语句,即不返回值,它会返回垃圾值吗?

C++ 如果指定返回类型为int的函数没有任何返回语句,即不返回值,它会返回垃圾值吗?,c++,C++,这个程序,在主函数中为cout打印垃圾值 代码: 输出: 五, 6296224 有这样的规则吗?在C中,如果使用返回值,它将调用未定义的行为: C11,6.9.1p12如果到达终止函数的},并且调用方使用了函数调用的值,则行为未定义 在C++中,函数调用是未定义的行为: C++11,6.6.3p2从函数末尾流出,相当于一个没有值的返回;这会导致值返回函数中出现未定义的行为 未定义的行为意味着一切。这是使用-Wall开关编译的一个很好的理由。具体来说,-WRead类型会给你一个警告。请参见:并且我

这个程序,在主函数中为cout打印垃圾值

代码:

输出:

五,

6296224


有这样的规则吗?

在C中,如果使用返回值,它将调用未定义的行为:

C11,6.9.1p12如果到达终止函数的},并且调用方使用了函数调用的值,则行为未定义

在C++中,函数调用是未定义的行为:

C++11,6.6.3p2从函数末尾流出,相当于一个没有值的返回;这会导致值返回函数中出现未定义的行为


未定义的行为意味着一切。这是使用-Wall开关编译的一个很好的理由。具体来说,-WRead类型会给你一个警告。请参见:并且我删除了C标签,因为代码是C++。它们是两种不同的语言,特别是因为你问了一个关于语言细节的问题。注意,在C++中,这个值甚至不必被用来定义它的行为。+ 1对于引用对象来说,它是一个C引用而不是C++引用。@ CODYGRY这个问题最初被标记为C和C++,我添加了C++的引用,除了main函数之外,不需要返回
#include <iostream>

using namespace std;
int f(int num)
{
    cout<<num<<endl;   
}
int main()
{
   cout << f(5) << endl; 

   return 0;
}