我有下面的C代码,我希望它抛出一个错误,如“多个变量声明”,但它没有这样做。
#include int i; int i; int main() { printf("%d",i); return 0; }
现在输出为0
,但为什么呢?
代码下面还有一件事会给出错误预期
#include int main() { int i; int i; printf("%d",i); return 0; }
O / p是重新声明i的错误
i
的第一个定义是暂定定义(第二个定义也是暂定定义)。 它们虽然是“事实上的”定义(定义也作为声明),但没有错误。
从标准引用:
6.9.2 / 2
具有文件范围而没有初始化程序且没有存储类说明符或存储类说明符为静态的对象的标识符声明构成暂定定义。 如果翻译单元包含一个或多个标识符的暂定定义,并且翻译单元不包含该标识符的外部定义,那么行为就像翻译单元包含该标识符的文件范围声明一样,复合类型为翻译单元的结尾,初始化程序等于0。
以上就是c/c++开发分享在C中,多次声明变量是否有效?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/560584.html