未初始化变量作为其自己的初始化器的行为
在 C 和 C 中,未初始化的变量不会分配特定值。令人惊讶的是,使用这个未初始化的变量来初始化自身似乎在某些符合 C99、C11 和 C 11 标准的场景中是有效的。这引发了有关此类构造的行为的问题。
编译器允许
编译器允许这种行为,因为未初始化的变量在用作其初始值设定项时具有不确定的值。这个不确定值可以是未指定的,也可以是陷阱表示。
标准行为
C/C 标准规定在其自身的初始化中使用未初始化变量的行为是依赖于实现的。但是,提供了进一步的说明:
其他注意事项
需要注意的是,如果未初始化的变量从未被获取其地址,则仍然可能发生未定义的行为。根据 C11 标准,当使用具有自动存储持续时间且可以声明为寄存器存储类的对象时,这会导致未定义的行为。
因此,通常建议避免在自己的初始化中使用未初始化的变量,因为它的行为依赖于实现,并且可能会导致未定义的结果。
以上是在 C 和 C 中用变量自己的未指定值初始化变量是否有效?的详细内容。更多信息请关注PHP中文网其他相关文章!