读前50页中的错误分析有感

cao_julians 2010-02-11 07:31:33
T老先生的真正错误应该是这几个:
1. 关于ANSI C的介绍:1983年。。。制定了新标准,称为ANSI C。K&R在1988年修改了他们的名著(。。第二版)。1987年,ANSI 又公布了新标准----87 ANSI C。1990年国际标准化组织ISO接受87 ANSI C为ISO C的标准。1994年,ISO修改了C语言标准。-----这是T先生2005年的第三版上的文字(后面的内容都以2005年的第三版为例)。
关于ANSI C除了T老先生的说法,别的书上(中和外)都说:ANSI 在1983年设立了一个委员会以发展(译为开发更好)一个新标准,该标准于1989年正式采用。。。。国际标准化组织于1990年采用一个C标准(ISO C)。ISO C和ANSI C实质上是同一个标准。ANSI/ISO标准最终版本通常被称为C89或C90.。。。1994年,修订标准的工作开始了,这一努力的结果是产生了C99标准。----这是C Primer Plus(第五版)中文版的内容。
T老先生来了个超时空转换。
2.关于switch语句:T老先生写到:
它的一般形式如下:
switch(表达式)

case 常量表达式1: 语句1
case 常量表达式2: 语句2
.

case 常量表达式n: 语句n
default: 语句n+1
}
...
说明:
(1)switch后面括号内的”表达式“,ANSI C标准允许它为任何类型。
。。。
这里有两个大问题:case子句中的语句应该是语句序列(或称语句组),switch后面括号内的”表达式“,ANSI C标准只允许它为与整类型兼容的类型。T老先生的又一个超时空转换。翻番他的第一版“switch后面括号内的”表达式“,可以是整型表达式或字符型,也可以是枚举类型数据(见第十章)。对其它类型,原来的C标准是不允许的,而新的ANSI C标准允许上述表达式和case常量表达式为任何类型。”-----不用我再说了吧----与时俱进,不会将正确的又改成错误的吧?!----这个新的ANSI C是哪里来的啊?
3.关于void指针类型
“也可以将一个函数定义为void*类型,例如:
void* fun(char...)
表示函数fun返回的是一个地址,它指向”空类型“,。。。”
void在K&R的书明确指示为nonexistent(不存在),而Pointers to Void(即void*)的含义绝对不是指向“不存在”,而是泛类型或通用类型指针。
4.关于函数的返回值
(4)对于不带回值的函数,应当用“void“定义函数为”无类型“(或称”空类型“)。。。。此时在函数体中不得出现return语句。
----------return;不允许吗?
5.关于函数原型:
。。。一般形式有两种,分别为
(1)函数类型 函数名(参数类型1,参数类型2,。。。)
(2)函数类型 函数名(参数类型1,参数名1,。。。)
印刷错误点到为止:(2)参数类型 和参数名之间不应该有逗号!
重要的是函数类型究竟是什么?是单一的函数返回值类型还是返回值类型 (参数类型,。。。)
不再说了吧,我也没有那么多的时间的精力!
==================================
一般人读书可以没有我这么”叫真“,请读者翻开书仔细看看吧

...全文
181 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liutengfeigo 2010-06-14
  • 打赏
  • 举报
回复
还不结贴
tanmeining 2010-02-12
  • 打赏
  • 举报
回复
引用 7 楼 bladesoft 的回复:
当初我大一上学期就学的这本书,试着按书上例子编几个程序,结果都没有编译成功,导致我一度对编程失去兴趣。
还好自己后知后觉,慢慢的又对编程重燃激情。
现在感慨,计算机入门课程对一个初学者影响太大了,老谭其实有点误人子弟。

我可没误认子弟哦~
bladesoft 2010-02-12
  • 打赏
  • 举报
回复
当初我大一上学期就学的这本书,试着按书上例子编几个程序,结果都没有编译成功,导致我一度对编程失去兴趣。
还好自己后知后觉,慢慢的又对编程重燃激情。
现在感慨,计算机入门课程对一个初学者影响太大了,老谭其实有点误人子弟。
cao_julians 2010-02-12
  • 打赏
  • 举报
回复
C89和C99是业内公认的两个真正的C标准,83年和94年都是标准化组织开始具体工作的时间而不标准文本被批准生效的时间。
================================================
C89和C99是业内公认的两个真正的C标准,83年和94年都是标准化组织开始具体工作的时间而不是(刚才漏了一个字)标准文本被批准生效的时间。
cao_julians 2010-02-12
  • 打赏
  • 举报
回复
tanmeining(Colin.Tan)说“我可没误认子弟哦~”
===========================================
难道您就是T老先生?如果是的话,下面的文字看到了不要生气:
“二十年了,基于TC上摸索出来的东西有时间、也早应该让位于ANSI C了”
如switch(表达式)中表达式可以是任意类型的。。。
如结构体变量的尺寸是成员变量尺寸之和。。。
等等,等等,都是一个20年前16位编译系统的行为,怎么能作为C标准认识呢?
C89和C99是业内公认的两个真正的C标准,83年和94年都是标准化组织开始具体工作的时间而不标准文本被批准生效的时间。
cao_julians 2010-02-11
  • 打赏
  • 举报
回复
楼主看书比较仔细,谭浩强的书我现在再看呢,有些错误,正常~
====================================================
从1991年的第一版至今已经20个年头了,“有些错误”影响了一代人啊!
独孤过儿 2010-02-11
  • 打赏
  • 举报
回复
引用 2 楼 kenmark 的回复:
如果你是转来的,请稍微美化一下以显得你不是抄来的~

所谓“叫真”本文还差得远了~

话说小牛最近很闲啊~~
jackyjkchen 2010-02-11
  • 打赏
  • 举报
回复
perfmc,我好像又看到这个家伙了
cocat 2010-02-11
  • 打赏
  • 举报
回复
楼主好好理解吧~~如果是自己的感受那很不错
我啃 2010-02-11
  • 打赏
  • 举报
回复
如果你是转来的,请稍微美化一下以显得你不是抄来的~

所谓“叫真”本文还差得远了~
南气子水 2010-02-11
  • 打赏
  • 举报
回复
楼主看书比较仔细,谭浩强的书我现在再看呢,有些错误,正常~

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧