int i = i;
int main() {
int a = a;
return 0;
}
int a = a
肯定具有未定义行为(UB),更多细节可以在 Is reading an uninitialized value always an undefined behaviour? Or are there exceptions to it? 中找到。
但是 int i = i
呢?在C++中,我们可以将非常量值分配给全局变量。由于它具有文件作用域,因此在遇到声明之前已经被声明并初始化为零。在这种情况下,我们稍后在定义中将其赋值为 0
。可以安全地说这不会产生 UB 吗?
struct circular_list x = { &x, &x }
。这就是它的作用。 - Kaz