使用不确定的值初始化对象

use*_*635 2 c++ initialization undefined-behavior

以下是否调用未定义的行为?

int x;
int i = x;
Run Code Online (Sandbox Code Playgroud)

参考C++ 03

(4.1/1)如果左值引用的对象不是类型T的对象,并且不是从T派生的类型的对象,或者如果对象未初始化,则需要此转换的程序具有未定义的行为.

编辑: 但是,从(3.3.1/1)开始,对象可能会使用自己的不确定值进行初始化,为什么会这样?即

int x = x; //not an undefined behaviour
Run Code Online (Sandbox Code Playgroud)

Set*_*gie 6

是的,因为你正在读取x未初始化和未分配的变量()的值.