C和C++关于变量声明的区别以及一个矛盾的现象
来源:互联网 发布:网络教育好不好毕业 编辑:程序博客网 时间:2024/05/16 08:25
什么都不说了,先贴代码吧,在VS2010里面输入以下代码(MAC Book没电了(电源不想找,不能在MAC OS XCode里面测试了))
//A.c fileintiValue;
//B.c fileintiValue;
//main.c file#include <stdio.h>extern intiValue;int main(){ printf("%d\n", iValue);}
C语言有如下标准:
当一个变量在外围声明的时候没有进行初始化,那么这个变量不能算定义。比如:int iValue;这代码不算定义,只能算声明。
根据C标准,以上的A.c和B.c里面的iValue只能算声明,那么,这个程序在链接的时候应该会报错(没有找到iValue的定义),但是,我在VS上面测试的结果表明程序运行成功,并且输出的结果是0。
相对 C语言的没有初始化的变量声明不能算定义而言,C++并不与之一样地对待,C++有如下规定:
1,进行初始化的变量是定义。如int iValue= 0;或者extern int iValue = 0;这就算iValue的定义(有初始化)。
2,不进行初始化的变量且前面没有extern关键字的变量也是定义。比如int iValue;就算iValue的定义,但是,extern int iValue就只能算声明了(有extern 关键字)。
与C不符合的理由理由:
这个标准之所以与C不符合是因为C++里面有默认构造函数,比如class CT object,你肯定不能说它是object的声明。
另外,如果用C++进行编译,VS2010又符合C++的标准了。
代码如下:
提问:
关于上述问题,VS为何与C语言的标准不符合。
- C和C++关于变量声明的区别以及一个矛盾的现象
- C和C++关于变量声明的区别以及一个矛盾的现象
- [水滴]C中变量的定义和声明的区别
- C语言 变量声明和定义的区别
- C语言 变量声明和定义的区别
- 这个关于c中break的跳转位置以及声明变量的作用域的问题。
- C变量的声明和定义
- C 语言变量的声明和定义
- C变量的声明和定义
- c语言变量的声明和定义
- C变量的声明和定义
- C变量的声明和定义
- C/C++ 变量声明和定义的区别 静态变量的作用
- 变量声明和定义的区别||变量存储类别小结(C程序设计中的内容)
- 变量和函数的声明与定义(C/C++)
- C语言 变量的声明
- C++ 声明一个变量 和 New 一个空间的区别
- 声明和定义的区别(C++)
- Ubuntu下添添加的用户没有sudo权限的解决办法
- js日期 转换:计算周岁
- 学习笔记(六)
- 哈希表的尴尬
- 机器人AndyVision 新一代商店库存管理员(附视频)
- C和C++关于变量声明的区别以及一个矛盾的现象
- AGPS定位基本原理浅析
- WPF camera capture control
- Amazon Appstore 或者 Nook Appstore 是否可以使用Google Licensing LVL
- iPhone开发资源汇总(更新中)1
- 【数论】【矩阵乘法】【NOI2011】兔农
- HTML 中的几个小知识
- connect超时时间的一点探讨<转>
- iPhone开源项目汇总(更新中)2