标准C语言有哪些重要的规定?
有个什么ANSC I标准是吧。但是我稍微查了查,没什么详细解释啊~
我就知道什么,变量一定要预先定义,不能像C++那样用到的时候再定义。
C++的是 ANSC II标准,我也就知道 main函数必须是int型的,临时变量的生存时间看情况……
我只是写些标C语言的win32 的控制台程序,告诉下会导致编译不通过的重大需要注意事项就好。拜托啦。
追问:这样想来还是得学学TC的用法了。以前一直用VC++6.0,但这玩意是在对程序没什么要求……
有个什么ANSC I标准是吧。但是我稍微查了查,没什么详细解释啊~
我就知道什么,变量一定要预先定义,不能像C++那样用到的时候再定义。
C++的是 ANSC II标准,我也就知道 main函数必须是int型的,临时变量的生存时间看情况……
我只是写些标C语言的win32 的控制台程序,告诉下会导致编译不通过的重大需要注意事项就好。拜托啦。
追问:这样想来还是得学学TC的用法了。以前一直用VC++6.0,但这玩意是在对程序没什么要求……
答案: 现行的C语言国际标准有2个,分别是ANSI/ISO 9988-1990和ISO/IEC 9989-1999,分别通过与1989年和1999年,也就是我们常说的C89(或C90,因为这一版的ISO标准等同于美国国家标准ANSI X3.159-1989)和C99。中国也有自己的C语言国家标准,GBT 15272-1994,也等同于ISO 9989-1990。
C99相对于C89来说增加了很多特性,比如说新的关键字,数据类型,变长数组,国际化特征等等,一般来说,现在的C编译器都能很好的符合C89标准,而C99标准至今还没有很好的普及,比如说微软直到VC2010依然没有符合C99标准。
C89和C99的标准文档都可以很方便的下载到,当然是英文的,中文的可以看GBT 15272-1994的文档,但只是C89。标准文档这个东西其实和法律条文是一样的,都是抠字眼的东西,主要是给编译器的开发者看的,同时因为标准其实也是个妥协的产物,所以标准除了明确定义的内容,还有一些未定义的内容留给编译器开发者自行发挥,这个就造成了不同编译器的差异,而且不同的编译器也会增加一些标准未提及的东西,比如TC,VC,GCC一类都有自己的扩展语法。如果你希望你编写的程序在不同的编译器里都能获得同样的结果,也就是说具有"可移植性",那么遵循标准是一个很好的办法。这个方面对楼上的回答就不敢苟同了,因为你写再多的程序,不明白标准是怎么定义的,再换到另一个编译器的时候,依然可能会碰到奇怪的问题,比如同一个程序在TC里正常,到VC里就不对。而你不可能试遍所有的编译器。比如说int类型的长度,struct字节对齐一类的问题。
至于C标准的重要规定,我觉得都是重要规定。如果你想深入学习C语言,那么标准文档是有重要的参考价值的,但是上面也说了,标准文档都是抠字眼的文字,读起来估计有些晦涩,所以你需要一些好的参考书。推荐C Prime Plus,C语言程序设计:现代方法,C参考手册,这几本书都涵盖了C89和C99,对2个标准都做了说明。楼主好,给你点建议,不必可以去追求什么标准,要想写出来的程序错误少,那就多上机,多敲代码,尽量自己调试,实在不懂再问别人,这样久了,你的程序错误会越来越少。至于你说的ANSCII标准嘛,太多了,你不具体的问,我没法具体的答啊,有什么问题问我吧
上一个:C语言冒泡发排序循环控制问题?
下一个:关于C语言的几个语法点