在初始化中使用新声明的变量 (int x = x 1)
在 C/C 中,声明变量并初始化的行为它使用相同变量的值(例如,“int x = x 1;”)可能看起来令人惊讶。本文深入探讨了此类声明的机制和含义。
变量声明和初始化
变量声明和初始化是 C/C 中的两个不同步骤。声明为变量创建一个名称,而初始化则为该变量分配一个值。在提供的示例中(“int x = x 1;”),变量 x 被声明为具有初始值。
力学
这种行为是允许的,因为变量 x 在初始化时就存在(“=”符号)。这意味着可以在初始化表达式的右侧使用它。在赋值完成之前,它充当未初始化的变量。
但是,请务必注意,此行为仅适用于具有静态存储持续时间的变量(即在函数外部声明的变量)。对于本地声明的变量(例如,在函数内),在初始化表达式的右侧使用未初始化的变量会导致未定义的行为。
C 标准定义
C 03 标准规定“名称的声明点紧接在其完整声明符之后……并且在其初始化程序(如果有)之前。”这意味着提供的示例中的第二个 x 使用其自己的未初始化值进行初始化,从而导致未定义的行为。
结论
虽然可以声明和初始化变量使用它自己的值,这种做法应该避免。在某些情况下,它可能会导致未定义的行为,并且通常被认为是不良的编码风格。最好单独声明和初始化变量,以确保代码的清晰度和可预测性。
以上是为什么用自身初始化变量会导致 C/C 中未定义的行为?的详细内容。更多信息请关注PHP中文网其他相关文章!