从 6.3.2.1(强调我的)
如果左值指定了一个可以使用寄存器存储类声明的具有自动存储持续时间的对象(从未使用过它的地址),并且该对象未初始化(未使用初始化程序声明并且在使用之前没有对其进行分配) ),行为未定义。
这意味着,如果无法使用寄存器存储类声明自动对象(获取它的地址):
int x;
printf("just a dummy pointer print %p", &x); //taking the address to break 6.3.2.1 UB condition
if (x == 2)
{
print("x uninitialized value: %d", x);
}
根据 6.3.2.1,if (x == 2)
在我使用未初始化对象的值的地方没有未定义的行为。如果这是真的,并且这里没有 UB,那么定义的行为是什么?x
根据标准,我应该期待什么?