-1
我认为这个问题是不是的网站上的其他问题重复,因为别人不给这个功能的使用C.int k = k;这个声明如何以及为什么起作用?
我想知道为什么这个C程序是不会放弃编译时错误。此外,为什么这个陈述有效。它有什么用途?
int main(int argc, char const *argv[])
{
int k = k;
return 0;
}
在全球范围内没有k
。看起来k
的范围看起来就在赋值运算符后面。我很困惑。
事实上,声明名称的范围从声明符结束后开始,即在您的案例的'='符号处。即使有一个全球性的“我”,那个“我”也会被新申报的“我”隐藏起来。你可以制作一些可疑但合法的代码,例如, g:'int f(int * p),i = f(&i);' – ach
在编程的世界里,“它起作用/似乎正常工作/曾经工作过”是一个非常微妙的陈述 – user3528438
RE:your edit-there *是*没有用处,它是未定义的行为 –