int k = k;这个陈述如何以及为何有效?

时间:2016-02-28 17:33:12

标签: c syntax scope

我认为这个问题在网站上的其他问题不重复,因为其他人不会在C中使用此功能

我很想知道为什么这个C程序没有给出编译时错误。为什么这个陈述有效。它有什么用途?

int main(int argc, char const *argv[])
{
    int k = k;
    return 0;
}

全局范围内没有k。看起来好像k的范围刚好在赋值运算符之后。我很困惑。

1 个答案:

答案 0 :(得分:3)

int i = i;定义使用(右侧的未初始化值)i相同的变量)初始化(左)i

这当然是未指明的行为,可能是undefined behavior

实现当然不会总是检测到未定义的行为(总是可靠地检测它们可以证明等同于halting problem)。

但你真的应该是scared未定义的行为。你有责任避免它。