网站大量收购独家精品文档,联系QQ:2885784924

C语言经典源码大全.doc

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE 1 【新标准】   在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C++继续在改进。(实际上,NormativeAmendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)标准在90年代才经历了改进,这就是ISO9899:1999(1999年出版)。这个版本就是通常提及的C99。它被ANSI于2000年3月采用。   在C99中包括的特性有:   对编译器限制增加了,比如源程序每行要求至少支持到 4095 字节,变量名函数名的要求支持到 63 字节 (extern 要求支持到 31)   预处理增强了。例如:   宏支持取参数 #define Macro(...) __VA_ARGS__   使用宏的时候,参数如果不写,宏里用 #,## 这样的东西会扩展成空串。(以前会出错的)   支持 // 行注释(这个特性实际上在C89的很多编译器上已经被支持了)   增加了新关键字 restrict, inline, _Complex, _Imaginary, _Bool   支持 long long, long double _Complex, float _Complex 这样的类型   支持 : : % % %: %:%: ,等等奇怪的符号替代   支持了不定长的数组。数组的长度就可以用变量了。声明类型的时候呢,就用 int a[*] 这样的写法。不过考虑到效率和实现,这玩意并不是一个新类型。所以就不能用在全局里,或者 struct union 里面,如果你用了这样的东西,goto 语句就受限制了。   变量声明不必放在语句块的开头,for 语句提倡这么写 for(int i=0;i100;++i) 就是说,int i 的声明放在里面,i 只在 for 里面有效。(VC没有遵守这条标准,i 在 for 外也有效)   当一个类似结构的东西需要临时构造的时候,可以用 (type_name){xx,xx,xx} 这有点像 C++ 的构造函数   初始化结构的时候现在可以这样写:   struct {int a[3], b;} hehe[] = { [0].a = , [1].a = 2 };   struct {int a, b, c, d;} hehe = { .a = 1, .c = 3, 4, .b = 5} // 3,4 是对 .c,.d 赋值的   字符串里面,\u 支持 unicode 的字符   支持 16 进制的浮点数的描述   所以 printf scanf 的格式化串多支持了 ll / LL (VC6 里用的 I64) 对应新的 long long 类型。   浮点数的内部数据描述支持了新标准,这个可以用 #pragma 编译器指定   除了已经有的 __line__ __file__ 以外,又支持了一个 __func__ 可以得到当前的函数名   对于非常数的表达式,也允许编译器做化简   修改了对于 / % 处理负数上的定义,比如老的标准里 -22 / 7 = -3, -22 % 7 = -1 而现在 -22 / 7 = -4, -22 % 7 = 6   取消了不写函数返回类型默认就是 int 的规定   允许 struct 定义的最后一个数组写做 [] 不指定其长度描述   const const int i; 将被当作 const int i; 处理   增加和修改了一些标准头文件, 比如定义 bool 的 stdbool.h 定义一些标准长度的 int 的inttypes.h 定义复数的 complex.h 定义宽字符的 wctype.h有点泛型味道的数学函数 tgmath.h 跟浮点数有关的 fenv.h。stdarg.h里多了一个 va_copy 可以复制 ... 的参数。time.h 里多了个 struct tmx 对 struct tm做了扩展   输入输出对宽字符还有长整数等做了相应的支持   相对于c89的变化还有   1、增加restrict指针   C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的唯一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元,或者指向由malloc()函数所分配的内存变量。restrict数据类型不改变程序的语义。   如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()函数就是restrict指针的一个典型应用示例。C89中memcpy()函数原型如下:   代码: void *memcpy (void *s1, const void *s2, size_

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档