《C Traps and Pitfalls》 中译本勘误

1. 127页,最后一段

   

     原文:

     这样,如果允许嵌套注释,上面的表达式就等效于“*/”;如果不允许,那么就等效于"/*"。

 

     应该为:

     这样,如果不允许嵌套注释,上面的表达式就等效于“*/”;如果允许,那么就等效于"/*"。

 

     可以将127页的测试例子和128页的测试例子,在一个C++工程里测试一下便知,估计是原始版本的错误。

 

2. 125页,第四段

 

     原文:

     我们知道,再怎么不可能发生的事情,某些时候还是有可能发生的。一个健壮的程序应该预先考虑到这种异常情况。

 

     实际上,这里作者想要表达的意思应该是:

     “看起来不会发生的事情”在某些情况下还是有可能发生的。一个健壮的程序应该预防异常情况可能带来的严重后果。

 

3. 97页,页尾的代码

 

    原文:

    toupper(int c)

    {

           if ( c >= 'a' && c <= 'z' )

              c += 'A' ? 'a';

           return c;

 

    应该为:

    toupper(int c)

    {

           if ( c >= 'a' && c <= 'z' )

              c += 'A' - 'a';

           return c;

   

    原版就是这样,没有试过,改为“?”是否可以。

 

4. 98页,页首的代码

 

    与勘误三一样,应该为“-”             

 

5. 151页,从上往下数第三段

 

    应为“...因此,一个非常小的数值即使不是0,也有可能输出0;而一个很大的数值,...”

 

6. 107页,页尾

 

    应为“...并不需要实际支持3种不同长度的整数,但不能够让short型整数大于int型整数...”

    书中的翻译没有强调出不能。

 

7. 85页,5.2节第一段

 

    应为“许多系统中的标准I/O库都允许一个单一的文件对于输入和输出来说,是同时处于打开状态的:”

 

    书中的翻译混淆了什么或谁可以同时,即同时性的对象。书中的翻译是“同时进行写入和读出”,意思错了,看下文的解释便知。   

 

8. 85页,5.2节第三段

 

    应为“...遗憾的是,事实总是难遂人愿,为了保持与在能够使用这个选项之前写出来的程序的向下兼容性,一个读取操作不能随后直接紧跟着一个写入操作而没有插入对fseek函数的调用,反之亦然。”

 

    原书的翻译再次犯了同时性的错误,而且对插入fseek函数的意义解释错了。

 

9. 89页,5.4节最后代码

 

    应为:

         /* 调用库函数 */

          if ( 错误返回 )

             检查 errno

 

10. 151页,关于%%格式项的说明

 

   应为“%%格式项用于打印出一个%字符。它是唯一的一个在使用时不需要对应参数的格式项。”

 

   书中的翻译不如这样译直白。

 

2009年4月2日

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值