Linux 版 (精华区)
发信人: netiscpu (夜☆星光点点☆), 信区: Linux
标 题: ◇ 之二 -- K&R C vs ANSI C
发信站: 紫 丁 香 (Sun Nov 15 21:50:56 1998), 转信
寄信人: guest.bbs@hgluo.hust.edu.cn
标 题: ◇ 之二 -- K&R C vs ANSI C
发信站: 华南理工大学 BBS木棉站
日 期: Thu Feb 20 14:30:24 1997
战 斗 世 家 C 语言讲座 #2
作者: Lgw Lu
E-Mail: lgwlu@ms1.hinet.net
---------------------------------------------------------------
< K&R C vs ANSI C >
前言:
西元 1978 年,K&R 出了 The C Programming Language 之後,
C 语言 - 红了!! 从 UNIX 移植到各个平台,从此越来越多人用 C,
但因为电脑科技进步神速,使得各家 Compiler 做的越来越不同.
西元 1983 年 ANSI 成立了 C 语言委员会,目的是要制定一套可
遵循的 C 语言标准.
内文:
在此我们不研究历史,我们来看看 ANSI 多了啥,有啥好用的!!
(请注意!目前市面上的 C Compiler 大都支援 ANSI 及 K&R 格式)
..............
........
说实在的,ANSI 要说完,可能篇幅....... 超级大!!
所以我指出一些重要的,其他的,如果有机会再说了!!
(1) 型别转换
Ex:
K&R C 写法 ANSI C 写法
/* FILE 1 */
float a(float,float);
main()
{ 同左
float x=1.2 , y=2.3;
printf("%f\n",a(x,y));
}
/* FILE 2 */
float a(x,y) float a(float x,float y)
float x,y; {
{ return (x+y);
return (x+y); }
}
大家一定以为这两种写法的结果相同,其实不然!! K&R C 写法的
结果是错的!! 哇!! 相信有些用这种写法的人一定会觉得-怎麽可能
???? 我说明一下,当然你可以试试看!!
原因是型别转换不同(详细资料请自行查书),K&R C 会在运算前,
将 float 转成 double,但因传回是 float,so 资料就失掉准度,
因此结果是错的!!还有 K&R C 的写法 Compiler 无法帮你做型别检
查,容易造成传错型别参数而不自知!!
所以 ANSI C 的委员,都建议不要使用此种写法,当然目前都还是
支援此写法,用 K&R C 写法的人,自己要小心,以免错了而不知错
在哪的情形发生!!
(2) 资料型别
ANSI C 增加了 signed 及 unsigned ,还有 wchar_t ,在这介绍
一下 wchar_t!!
wchar_t : 宽文字,也就是双字元组.
这表示 ANSI C 对亚洲也有顾虑到呦!!用法:
char str[]="战斗世家";
以前这样写,如果想取出其中一字,怎办?!只好分两次 ...... 唉!!
但如果这样写
#include <stddef.h>
wchar_t str[]=L"战斗世家";
(前面 L 是常数前导,设初值最好加一下,作用同 long x=6000000L;
主要是让 Compiler 确定此型别,毕竟每家 Compiler 都不同嘛!!)
那就容易多了,如 "世" 字,就是 str[2];....... 多容易!!
这真的很方便,但还是有人写程式不用, 例如 Windows 下的软体
常常都不能用中文,也许对亚洲市场没兴趣吧!!
K&R C vs ANSI C 暂时写到这,还有其他的东东,慢慢後续都会讲
到,记得继续看下去呦!!
清楚两种写法不同之处了吧!! 建议 - 用 ANSI C 写法吧!!
预告:
下篇将介绍 C 语言最强之指标运用!! < 指标 - 强强强 >
---------------------------------------------------------------
<<< 本文版权属於作者 >>>
本文章可自由引用,拷贝,传阅,但需保持本文章之完整性,从标题
到最後版权宣告,且不能用来做商业用途!!
若有任何问题,或是错误之处,欢迎来信批评指教!! 谢谢!!
--
m;32m※ 转寄:.华南网木棉站 bbs.gznet.edu.cn.[FROM: mtlab.hit.edu.cn]
--
Enjoy Linux!
-----It's FREE!-----
※ 来源:.紫 丁 香 bbs.hit.edu.cn.[FROM: mtlab.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.191毫秒