变量初始化意味着什么 我正在阅读C++标准,我遇到了(3.3.2/2):

变量初始化意味着什么 我正在阅读C++标准,我遇到了(3.3.2/2):,c++,initialization,C++,Initialization,在本例中,x用它自己的(不确定)值初始化。在这种情况下,x是否已初始化 如果在VS中运行此代码并启用所有检查,则会出现运行时错误 运行时检查失败#3-正在使用变量“x”,但未初始化 初始化过程,(粗略地)为对象赋值。当您使用对象本身时,您正在使用未初始化的内存来初始化内存 关于初始化本身,我推荐第8.5章: 声明器可以为所声明的标识符指定初始值。标识符指定正在初始化的变量。8.5剩余部分中描述的初始化过程也适用于由其他语法上下文指定的初始化,例如使用参数表达式初始化函数参数(5.2.2)或初始化

在本例中,
x
用它自己的(不确定)值初始化。在这种情况下,
x
是否已初始化

如果在VS中运行此代码并启用所有检查,则会出现运行时错误

运行时检查失败#3-正在使用变量“x”,但未初始化

初始化过程,(粗略地)为对象赋值。当您使用对象本身时,您正在使用未初始化的内存来初始化内存

关于初始化本身,我推荐第8.5章:

声明器可以为所声明的标识符指定初始值。标识符指定正在初始化的变量。8.5剩余部分中描述的初始化过程也适用于由其他语法上下文指定的初始化,例如使用参数表达式初始化函数参数(5.2.2)或初始化返回值。(……)

和12.6:

12.6初始化[class.init]

  • 如果没有为类类型(可能是cv限定的)的对象(或其数组)指定初始值设定项,或者初始值设定项的形式为(),则按照8.5中的规定初始化该对象

  • 类类型(或其数组)的对象可以显式初始化;见12.6.1和12.6.2

  • 当类对象数组被初始化(显式或隐式)且元素由构造函数初始化时,应按照下标顺序为数组的每个元素调用构造函数;见8.3.4。[注:数组元素的析构函数按与其构造相反的顺序调用。-结束注]

  • 12.6.1 类类型的对象可以用括号内的表达式列表初始化,其中表达式列表被解释为调用以初始化对象的构造函数的参数列表。或者,可以使用=初始化形式将单个赋值表达式指定为初始值设定项。应用直接初始化语义或复制初始化语义;见8.5。(……)


    这仅仅是UB,在这里已经被问了一百万次了。这次结束投票在这里无关紧要。“一个无法再重现的问题或一个简单的印刷错误。”??@πνταῥεῖ 什么是UB?同样相关:详尽的答案!非常感谢@DmitryFucintv注意:我没有引用12.6.1和12.6.2的完整摘录,因为这需要几页。很高兴我帮了忙
    int x=x;