我有这样的代码:编译器返回未初始化值
#include <iostream>
using namespace std;
void funcA()
{
int a = 4;
}
void funcB()
{
int b;
cout << b;
}
int main()
{
funcA();
funcB();
cout << endl;
return 0;
}
如果我编译它没有优化:g++ -o run file.cpp
我收到的结果:g++ -O3 -o run file.cpp
我收到的结果是:4
如果我与编译:现在0
,我希望在这两种情况下
1)返回从FuncA的什么,因为我们只是调用它,在乐趣cA我们只是给一个变量赋值(不返回任何东西)。
2)由于我们没有初始化b值,所以从编译器返回一个关于funcB的警告。
我发现this answer更好(更详细)。
这是未定义的行为。你得到的是你得到的,因为未定义的理由 – NathanOliver
好吧,未定义的行为是未定义的,因此争论是没有用的。如果您需要警告,请启用警告。 –
*现在,我预计在这两种情况下...... * - 不,未定义的行为不会以您希望发生的事情发生的方式发挥作用。 – PaulMcKenzie