gpt4 book ai didi

c - 为什么这段代码没有重声明错误呢?

转载 作者:太空宇宙 更新时间:2023-11-04 00:45:46 26 4
gpt4 key购买 nike

#include <stdio.h>

int x=3;
int main()
{
int x=4;
printf("%d",x);

return 0;
}

正如我们所知,本地声明也可以作为全局声明。由于 x 已经全局声明为 3,新的全局声明(非暂定)不会导致重新声明错误,因为“合并”多个非暂定定义不会发生在本地声明的情况下?

最佳答案

不,来了 scope .

main() 中的 x 具有 block 作用域并覆盖(遮蔽)global x main().

相关,引用 C11,章节 §6.2.1,“标识符的范围”,(强调我的)

[...] If an identifier designates two different entities in the same name space, the scopes might overlap. If so, the scope of one entity (the inner scope) will end strictly before the scope of the other entity (the outer scope). Within the inner scope, the identifier designates the entity declared in the inner scope; the entity declared in the outer scope is hidden (and not visible) within the inner scope.

关于c - 为什么这段代码没有重声明错误呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40425035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com