ANSI C 与 C99的不同

由于C语言在发展过程中制定了多个标准,其中ANSI C 和 C99这两大标准用的最多,但也有很大的差别。不同的编译软件所使用的标准不同,在一个编译软件中使用其他的C语言标准来写代码就会造成一些“不正常”的错误。以下列举了ANSI C 与 C99两大标准的不同点,以供大家参考。

1. C99中可在任意地方定义变量;而传统的ANSI C 只能在代码开头的地方定义变量。

2. 变量是可变的量,常量是固定不变的量,直接写在程序里的,我们称作直接量(literal),在程序中多次出现的直接量,是magic number不利于阅读与维护;

C99允许直接定义常量 ,在类型前边加修饰符 const,这个值不能被修改,read-only variable is not assignable。

ex: const int A=100;

(注意与宏定义相区别)

3. 单行注释 // 是C99独有的,ANSI C不支持;而多行注释 /* */是传统ANSI C就有的

4. for(int i=0;i<n;i++)这种在for循环里定义变量是C99独有的

5. C99在定义数组时,数组的个数可以是变量

5. C99进行数组的集成初始化时,可定位赋值。

ex: int a[10]={[0]=20,[5]=,5,6};

输出:20,0,0,0,0,5,6,0,0,0