《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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM