int i = i;
int main() {
int a = a;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int a = a肯定有未定义的行为 (UB),关于它的更多细节在
读取未初始化的值总是未定义的行为吗?或者有例外吗?.
但是呢int i = i?在 C++ 中,我们可以为全局变量分配非常量值。i在遇到声明之前声明并零初始化(因为它具有文件范围)。在这种情况下,我们将0在定义的后面分配给它。可以说这没有 UB 吗?
我有以下代码:
// in global scope:
int x = x;
Run Code Online (Sandbox Code Playgroud)
此代码编译时不会对 GCC 和 clang发出警告:
x:
.zero 4
Run Code Online (Sandbox Code Playgroud)
这是明确定义的吗?它是如何工作的?