谁知道wy本地i_local值在本例http://ideone.com/Cqer9Z中为零初始化
#include <iostream>
using namespace std;
int main() {
int i_local; // automatic storage duration, not static
cout << "Value of i_local: " << i_local << endl; // (2-3) value is undetermined
}它是可变的,自动存储时间,根据标准是应该有未定的值。
在我的本地计算机(c++11)中,它是未定的,但在ideone (c++14)中是零的。
发布于 2015-04-21 10:12:48
完整地说,标准说(强调后加):
当获得具有自动或动态存储持续时间的对象的存储时,该对象具有一个不定值,如果不对该对象执行初始化,则该对象保留一个不确定值,直到该值被替换(5.18)。.如果一个不确定的值是由一个计算产生的,则该行为是未定义的,除非在一些不相关的情况下.
你有不明确的行为。它可以打印0,它可以打印50,它可以打印胡言乱语,或者它可以擦除你的硬盘驱动器。
发布于 2015-04-21 10:12:36
零是int的值之一,因此未定值的int为零是完全合法的。
此外,UB甚至尝试读取该整数,因此您所看到的值从定义上来说是毫无意义的。
https://stackoverflow.com/questions/29769115
复制相似问题