Ren*_*Ren 16 c++ undefined-behavior
我对以下代码感到困惑:
#include <iostream>
int i = 1;
int main()
{
int i = i;
std::cout << "i: " << i << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
i: 0
Run Code Online (Sandbox Code Playgroud)
我曾预计运行上面的代码会打印出来1.有人可以解释这种奇怪行为的原因吗?
Hum*_*awi 62
你正在初始化i自己.两者i的在 int i = i;是内一个不外一个.这是未定义的行为,您可能会得到0或可能发生任何事情.
如果要将外部分配给i内部,这是正确的方法i.
#include <iostream>
int i = 1;
int main()
{
int i = ::i;
std::cout << "i: " << i << "\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你应该仔细阅读所有编译器警告.如果你这样做,你可以自己看到问题:
警告'i'在此函数中未初始化使用
| 归档时间: |
|
| 查看次数: |
1558 次 |
| 最近记录: |