是否将本地范围的变量初始化为未确定的值或未初始化?

Luc*_*ore 2 c++ language-lawyer

迂腐地说,是否x在以下代码中初始化?

int main()
{
    int x;
}
Run Code Online (Sandbox Code Playgroud)

在8.5 Initializers [dcl.init](对于C++ 11)中有一些关于它的段落,但没有任何示例支持.

dyp*_*dyp 5

它正式默认初始化,这意味着对于ints,不执行初始化.

[dcl.init]/12(N3797)

如果没有为对象指定初始化程序,则默认初始化该对象; 如果未执行初始化,则具有自动或动态存储持续时间的对象具有不确定的值

[dcl.init]/7

到默认初始化的类型的对象T是指:

  • if T是(可能是cv限定的)类类型,默认构造函数为T[...];

  • 如果T是数组类型,则每个元素都是默认初始化的;

  • 否则,不执行初始化.

  • 因此,它被初始化,但该动作包括"不执行初始化".要么是,要么是默认初始化,但默认初始化不是这种情况下的初始化.或者,术语"初始化"在标准中没有正式含义,而"默认初始化"则与"初始化"一样.嘎. (3认同)