读取未初始化的变量

时间:2015-05-30 05:51:10

标签: c++ language-lawyer

读取未初始化的变量会导致未定义的行为,例如

#include <iostream>

int main()
{
    int a;
    std::cout << a << std::endl; // undefined behavior
}

有人可以正式解释这个事实吗?

1 个答案:

答案 0 :(得分:4)

我认为以下是相关部分:

  

4.1 Lvalue-to-rvalue转换

     

1 - 非函数非数组类型T的glvalue可以转换为prvalue。如果T不完整   类型,需要这种转换的程序是不正确的。如果   glvalue引用的对象不是T和T类型的对象   不是从T,或对象派生的类型的对象   未初始化,需要进行此转换的程序   未定义的行为

变量是左值,我认为“左值转换的左值”是获取变量值的过程。

(注意 - 我不熟悉C ++标准,所以我可能没有找到适用于这个例子的部分。我所做的只是搜索PDF“未初始化”,并寻找看起来最相关。)