ANSI C 与 C99的不同

Posted nylglqx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于ANSI C 与 C99的不同的主要内容,如果未能解决你的问题,请参考以下文章

C 如何判断编译器是否支持C90 C99?

用于表示 ANSI (C89/90) C 中的字节的类型?

C89和C99标准有什么不同?

C89和C99标准有什么不同?

C89和C99标准有什么不同?

ANSI C编程啥意思,跟我们现在学的c/c++有啥不同?