ANSI C

ANSI C又名:ISO/IEC 9899 1990,或ANSI/ISO 9899 1990,或C89,C90.中国对此的相应标准为GB/T 15272-94.

 

ANSI C标准化工作的一个主要目标是清除原来C语言中的不安全,不合理,不精确,不完善的东西.由此也产生了ANSI C与K&R C之间的差异.

对现今新的ISO/IEC 9899 1999(即C99),许多编译器都还不能很好的支持.

目前的C标准基本还是使用ANSI C. 被尊为C语言圣经的K&R的 <<C程序设计语言(第2版)>>全都依据C89编写. 大学中常用的谭浩强的<<C程序设计(第三版)>>及一些C经典著作<<C专家编程>>,<<C标准库>>也都依据C89编写.足以证明此标准的重要性.

 

ANSI C 对 K&R C 的主要修改如下:

源文件内部的标识符,有效最小长度扩充到31个字符.文件间连接时,标识符的最小有效长度仍然为6个字符.(许多实现都支持更大的长度).
增加了几个新关键字:void,const,volatile,signed,enum.抛弃了老关键字entry.
在换意字符 / 之后写非规定的序列,其作用确定为无定义.
规定8和9都不是八进制数的合法字符.
引进了数的后缀字符:整数的U和L,浮点数的F和L.
规定连续出现的字符串常量将被拼接在一起.
引进了"宽字符"的概念.
将字符也确定为带符号(signed)和不带符号(unsigned)的.
丢弃了long float(原来作为double的同义词).
引入了void类型,用 (void*) 表示通用指针的类型(过去人们通常用 (char*)).
对算术类型规定了最小表示范围.要求每个C语言系统用头文件(<limits.h>和<float.h>)说明实现中的具体规定.
引进了枚举定义enum.
采用了来自C++的类型修饰符,如const.
规定字符串常量是不可修改的.
改变了算术类型的隐含转换规则.
删去了一些过时赋值运算符,如 =+.规定赋值运算符都是基本单词,如 += 之间不能有空格分隔.

引进了与一元 - 运算符对应的一元 + 运算符.
指向函数的指针可以直接放在函数调用的位置,不必显式地写间接操作.

允许结构地整体赋值,作为函数参数和返回值传递.
允许将取地址运算符作用于数组,得到的是指向有关数组的指针.
标准规定 sizeof 运算符的返回值为 size_t 类型(某个无符号整型),这一类型在标准头文件<stddef.h>里定义.

定义有 ptrdiff_t 类型,它是指针减运算的结果类型.
规定取地址运算符不能作用于 register 变量.

规定移位表达式的类型为其左运算对象的类型.

允许建立指向过数组末元素一个位置的指针,以及对它的算术运算和关系运算.

(从C++)引进了包含参数类型的函数原型概念,引进了变长参数表函数的概念.仍允许老的形式,但仅仅是作为过时形式保留.
标准规定任何局部声明的作用域仅仅是当前的块(复合语句).
规定函数参数作为加入函数体(复合语句)的声明,因此不能用变量声明去覆盖.
有关名字空间的规定:所有结构,联合和枚举标记在一个名字空间里,标号是另一个名字空间.

联合变量在定义时也可以初始化,规定初始化其第一个成分.
自动结构,联合和数组也可以初始化,但限制其初始化方式(其中只能包含常量表达式).
带大小描述的字符数组也可以用大小与之相同的字符串常量初始化(结束的 /0 被删除).
开关语句的控制表达式和case标号可以是任何整型的(包括字符类型).

 

 

具体可以参考文档<<GB/T 15272-94 C程序设计语言>>和<<ANSI/ISO 9899-1990 for programming languages - c>>.

有需要相关文档者请联系我,谢谢

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值