为什么在这段 C++ 代码中 i == 0 的值是?
Why is the value of i == 0 in this C++ code?
我对以下代码感到困惑:
#include <iostream>
int i = 1;
int main()
{
int i = i;
std::cout << "i: " << i << "\n";
return 0;
}
输出:
i: 0
我曾预计 运行 上面的代码会打印 1
。有人可以解释这种奇怪行为的原因吗?
您正在用自身初始化 i
。 int i = i;
中的两个 i
都是内部的而不是外部的。这是未定义的行为,您可能会0
或任何事情都可能发生。
如果你想将外部 i
分配给内部 i
,这是正确的方法。
#include <iostream>
int i = 1;
int main()
{
int i = ::i;
std::cout << "i: " << i << "\n";
return 0;
}
顺便说一句,您应该仔细阅读所有编译器警告。如果你这样做了,你自己就能看到问题所在:
warning 'i' is used uninitialized in this function
我对以下代码感到困惑:
#include <iostream>
int i = 1;
int main()
{
int i = i;
std::cout << "i: " << i << "\n";
return 0;
}
输出:
i: 0
我曾预计 运行 上面的代码会打印 1
。有人可以解释这种奇怪行为的原因吗?
您正在用自身初始化 i
。 int i = i;
中的两个 i
都是内部的而不是外部的。这是未定义的行为,您可能会0
或任何事情都可能发生。
如果你想将外部 i
分配给内部 i
,这是正确的方法。
#include <iostream>
int i = 1;
int main()
{
int i = ::i;
std::cout << "i: " << i << "\n";
return 0;
}
顺便说一句,您应该仔细阅读所有编译器警告。如果你这样做了,你自己就能看到问题所在:
warning 'i' is used uninitialized in this function