《C Primer Plus(第6版)中文版》勘误

搬运自己2016年11月28日发布于SegmentFault的文章。链接:https://segmentfault.com/a/1190000007626460


本勘误由本人整理并发布,仅针对下方列出的书籍印次。由于本人水平有限,不保证勘误正确性以及包含书中全部错误,故本勘误仅供参考,更新进度由本人阅读进度来决定。如有错误,请留言指出;如有补充,请至本书出版社图书页面尾部自行提交勘误。

书籍信息

书名: C Primer Plus(第6版)中文版
出版社: 人民邮电出版社
译者: 姜佑
印次:2016年10月北京第5次印刷
ISBN: 9787115390592
出版社图书页面链接:http://www.epubit.com.cn/book/details/1848


页码:83 • 行数:表4.4,修饰符【L】一行(倒数第三行),第二列,单元格内容第二行
英文版原文:Examples: "%Lf" and "%10.4Le"
中文版译文:示例:"%Ld""%10.4Le"
错误地把f录入为d


页码:87 • 行数:【4.4.4 转换说明的意义】下面第二段文字第一行
转换(Conversion)可能会误导读者认为原始值被转替换成转换后的值
英文原文:The term conversion is probably somewhat misleading because it might suggest that the original value is replaced with a converted value.
英文be replaced with原意为“被替换”,中文版为“被转替换”,应该是在录入的时候多打了一个“转”字


页码:94 • 行数:表4.7续表,转换说明【j】一行(表格第3行第2列)
示例"%zd""%zo"
然而原版提供的示例应为"%jd" "%ju"
"%zd""%zo"为转换说明【z】一行的示例,中文版书中直接给去掉了,估计是把z的示例当成了j的,而z本身的示例又没有打上


页码:95 • 行数:26
英文版原文:For example, if %c is preceded by a space in the format string, scanf() does skip to the first non-whitespace character.
中文版译文:例如,如果把%c放在格式字符串中的空格前面,scanf()便会跳过空格,从第1个非空白字符开始读取。
翻译错误。be preceded by意味【以……为先导,前面是……】,所以说,正确的含义应为:%c以一个空格为先导(%c的前面是一个空格)
翻译正好选择了相反的意思,并且这句话的逻辑也很奇怪
正确译文:如果在格式字符串中把空格放到%c的前面


页码:100 • 行数:4.8编程练习第2题
编写一个程序,提示用户输入名和姓,并执行一下操作:
英文原文:Write a program that requests your first name and does the following with it:

英文中只要求输入名,未要求输入姓
本题选项中也存在相同的翻译错误。
并且,中文存在录入错误,将“以下”输入成了“一下”


页码:100 • 行数:4.8编程练习第3题
第3题中,题目要求“用下面的格式进行输出”
a.输入21.3 或 2.1e+001
b.输入+21.290或2.129E+001

英文原文:
Have the output use the following formats
a.The input is 21.3 or 2.1e+001.
b.The input is +21.290 or 2.129E+001.

程序的要求是在屏幕上显示出形如The input is 21.3 or 2.1e+001.的输出,译者将格式要求直接翻译了


页码:118 • 行数:5.3.5优先级第2行
因此,x*y++表示的是(x)*(y++),而不是(x+y)++
录入错误,修改为:
因此,x*y++表示的是(x)*(y++),而不是(x*y)++


页码:125 • 行数:2
unsignedlong long,缺少一个空格,应为unsigned long long


页码:129 • 行数:程序清单5.16第4行注释

const int S_PER_H = 3600    //一小时的分钟数

应为一小时的秒数


页码:143 • 行数:第2段最后一行
具有歧义的译文:例如,假设你想跳过输入到第一个非空白字符或数字,可以这样写
英文原文:
For example, suppose you want to skip over input to the first character that isn’t whitespace or a digit. You can use a loop like this:
建议译文:例如,假设你想跳过输入到达第一个既不是空白字符也不是数字的位置,可以这样写


页码:161 • 行数:小结:do while语句-形式

do
statement
while (expression);

test为假或0之前,重复执行statement部分
英文版这里是expression,要么把括号里的expression改成test,要么把后面的test改成expression


页码:170 • 行数:复习题第1题
后5行中使用的是第1行quack的值
英文原文:
each of the final five statements uses the value of quack produced by the preceding statement.
正确译文:后5行中使用的是前一行生成的quack


页码:178 • 行数:28
if语句指示计算机,如果刚读取的值(remperature)小于0,
录入错误,应为temperature


页码:194 • 行数:最下面一段第一句
译文:要查找一个单词里是否有某个字符
英文原文:To keep track of whether a character is in a word
建议译文:要追踪一个字符是否在一个单词中


页码:212 • 行数:复习题第4题
下列个表达式的值是多少?
录入错误,个→各


页码:215 • 行数:7.12编程练习第2题
译文:一行打印8个字符。
英文原文:Print eight character-code pairs per line.
译者直接把题目的要求给篡改了。
建议译文:每行打印8个“字符-ASCII码”组合


页码:215 • 行数:7.12编程练习第7题
a.基本工资 = 1000美元/小时
英文原文:Basic pay rate = $10.00/hr
应改为:基本工资 = 10.00美元/小时


页码:222 • 行数:8.4重定向和文件 第2行
输出设备(我们假定)是键盘
英文原文:
The input device (we have assumed) is a keyboard
修改“输出”为“输入”


页码:222 • 行数:8.4.1上面一段第一行
表意不明的译文:
重定向的一个主要问题与操作系统有关,与C无关。
然而接下来并没有说这个主要问题是什么。
英文原文:
One major problem with redirection is that it is associated with the operating system, not C.
建议译文:
重定向的一个主要问题是它与操作系统有关,而与C无关。


页码:222 • 行数:8.4.1上面一段倒数第2行
在UNIX上运行苹果OS X,可以用UNIX命令行模式启动Terminal应用程序
英文原文:
Apple OS X runs on top of Unix, and you can use the Unix command-line mode by starting the Terminal application
译者完全弄成了相反的意思。
正确译文:
苹果OS X运行在UNIX上,故可使用Terminal应用程序来使用UNIX命令行模式
参考链接:https://support.apple.com/kb/PH7073?locale=zh_CN&viewlocale=zh_CN

posted on 2018-01-08 21:15  MorrisLi  阅读(2679)  评论(0编辑  收藏  举报

导航