搜索
查看: 3775|回复: 19
打印 上一主题 下一主题

正式版教材中已发现的一些错误

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-2 14:33:49 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 rosynirvana 于 2013-10-2 14:47 编辑

160页顶部
scanf("%c", a)两处,应为scanf("%c", &a);
164页, 174页
"\0"应作 '\0',字符串末尾的终止字符是一个char,而不是一个字符串
165页,166页
scanf("%x", ....) ,这里没有语法或者语义上的错误,但是不明白为什么要特意用%x替代符,是笔误吗?(向磊哥求证)
131页
time函数的声明在time.h头文件中,教材中没有提到要包含头文件,疏漏?

附录1:
189页,“下画线”两处。我没有查过字典,但是感觉上一般会写成“下划线”?

附录2:
这个表是C++的,C没有:: new delete这些操作符

评分

参与人数 1啊哈币 +10 收起 理由
啊哈磊 + 10 很给力!

查看全部评分

沙发
 楼主| 发表于 2013-10-2 14:45:22 | 显示全部楼层
可以避免的不可移植:
37页, 这里用%lf来输出double,但事实上%lf不是ISO C中所含有的printf占位符(double和float一样是用%f的)

131页,rand输出的范围不是0-32767,而是0-RAND_MAX, RAND_MAX是定义在stdlib.h中的一个macro;在msvcrt中碰巧是32767
微软现在依然把这个范围限定成16位是因为新的msvcrt中有个更安全的rand_s的函数,可以返回UINT_MAX之内的随机数

我觉得这里表述成“在我们的啊哈C中,是0-32767”比较好。非微软平台上的rand一般都是32位的。

161页,getch和getche这两个函数MS已经舍弃了,用_getch和_getche比较好,不然没准到哪天又不能用了
另外,这两个函数的声明在conio.h中,加上比较好

点评

说的很有道理啊:) 赞一个  发表于 2014-2-18 00:47
板凳
 楼主| 发表于 2013-10-2 14:50:51 | 显示全部楼层
最后,还是建议不要用gets和float
fgets比较好,虽然稍微麻烦点
一概用double替换float也能避免很多无谓的困扰,而且在新人所写的程序里面,多用的那点内存可以忽略
地板
 楼主| 发表于 2013-10-2 22:18:05 | 显示全部楼层
Dsp 发表于 2013-10-2 18:20
啊。。。那书已经出版了怎么办。。。

所有像样的技术书籍都有errata的
5#
 楼主| 发表于 2013-10-4 23:15:33 | 显示全部楼层
 头文件不加很多时候是可以运行的,这和啊哈C无关,C90本身就容忍这么做
6#
 楼主| 发表于 2013-10-6 14:11:10 | 显示全部楼层
lhr719311575 发表于 2013-10-6 13:51
说实话....我刚学...没看懂2楼和3楼什么意思!!!

还有

刚学自然是看不懂的,勘误是给作者看的,请他确认是否有误,然后制作官方勘误表

点评

确实是笔误:)  发表于 2014-2-18 00:48
7#
 楼主| 发表于 2013-10-10 23:49:13 | 显示全部楼层
说来我有点好奇
在NT6及以上的系统中,关机难道不需要管理员权限的?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表