免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 〇〇
打印 上一主题 下一主题

[C] 品悟C的问题 [复制链接]

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
101 [报告]
发表于 2012-09-27 16:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
102 [报告]
发表于 2012-10-02 20:51 |只看该作者
本帖最后由 Ager 于 2012-10-02 21:24 编辑

@pmerofc

新书于今晚刚刚到手。

粗略地浏览一下,赞扬的话且不必多说了:)下面扯扯一些小建议,供pm大虾和诸位大侠参考。

有些建议,可能在之前的其他的大虾的帖子里面已经提到了,而我没有完整全面地读到它们,所以,如果出现重复或雷同的部分,请大家原谅!

参照样本:

品悟C:抛弃C程序设计中的谬误与恶习 / 薛非著. —— 北京:清华大学出版社,2010.10
ISBN 978-7-302-29626-3
一版一刷实体纸制出版物

________________________________________________________________________________


正文第9页,图1-1,程序开发过程

这张图应该是扫描自另一纸制书上的页张的吧!除非“存留实物影像作为证据”的purpose,才用这种扫描(拍照)的方式来引用,否则,这样的引用方式,似乎有点粗糙了。

而且在引图上,还被打了一两处补丁,与其这样,不如重画一张图了,建议pm大侠用专门的概念图绘制软件来做,比如Dia、IHMC CmapTools等。


论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
103 [报告]
发表于 2012-10-02 21:22 |只看该作者
本帖最后由 Ager 于 2012-10-03 02:34 编辑

正文第10页,问题3《错误的“标点”——混用中英文字符》

52个大写和小写拉丁字符


关于把“拉丁字符”改为“拉丁字母”的建议,之前有 @〇〇 大虾提到过了。我再进一步扯一下 ……

建议把“52个大写和小写拉丁字符”改为“52个大写和小写拉丁字母字符”。

pm大虾用“拉丁字...”一词,而不用“英文字...”,可见,大虾是非常严谨的,从这个意义上说,这个用法非常准确,赞 —— :) 然而,说“拉丁字符”以及“大小写拉丁字符”,似乎就有一些不通。

“字符(Character)”是一个信息范畴上的概念,即一种信息交换单位,字符是没有大小写的。只有字母(Letter)才有大小写。

相对严格的说法,应该是:A...Za...z 这52个字符,是26个拉丁字母的大小写所对应的字符。


论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
104 [报告]
发表于 2012-10-02 21:35 |只看该作者
本帖最后由 Ager 于 2012-10-02 23:48 编辑

正文第20页,问题10《同形异质——为符号常量赋值》

这里提到:
  1. #define ABC =123
复制代码
在后来的:
  1. abc = ABC;
复制代码
中,将会被展开为:
  1. abc = =123 ;
复制代码
那么,
由于“abc = =123”违背C语言的语法规则,所以无法通过编译。
我要扯的是 ……

如果将代码写成:
  1. abc =ABC;
复制代码
那么,展开之后,会不会是这样:
  1. abc ==123;
复制代码
而“abc ==123;”确是一个完全符合C语言规则的语句,应该可以通过编译。

当然,我这个扯出来的例子,也是完全错误(不能通过编译)的。为什么错?pm大侠不妨进一步地剥析一下:)



论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
105 [报告]
发表于 2012-10-03 00:01 |只看该作者
本帖最后由 Ager 于 2012-10-03 02:47 编辑

正文第13页,问题5《“合并单词”产生的问题》

……白字符如[CR](回车换行)、……


CR是回车(Carriage Return),不是“回车换行”。C语言中用"\r"表示CR字符(ASCII编码13)。

LF是换行(Line Feed)。C语言中用"\n"表示LF字符(ASCII编码10)。

CR+LF才是回车换行,即“\r\n”。

LF+CR是换行回车,即“\n\r”。

类似的问题,还出现在正文第37页,问题9《忽视函数原型》

尽管'\n'确实是回车换行的字符编码,……


特别注意:回车字符、换行字符、回车键,是三个完全不同的概念。

下面这个图,可以帮助理解这个问题:



早期的计算机系统终端,都采用上图这种Teletype设备(它是UNIX上“tty”这个关于终端的称呼的由来)。Teletype跟我们(比如在我上中学时候的)经常接触的那种英文打字机不同的是:打字机的打字头的位置是固定不动的,每敲一次按键之后,负责夹纸、走纸的滚筒就往左边移动一个字符的长度;而Teletype的打字头(Carriage,即上图中有长得像扇环形百叶窗的金属东西并绑着色带的那个部分)是可以在字符水平方向上移动的,而负责夹纸、走纸的滚筒在这个方向上却是固定的。

在Teletype上:

如果要“回车换行” —— (A)负责实现CR的指令让Carriage回到该行的初始位置(最左端),是为“回车”;然后,(B)负责实现LF的指令,让滚筒将纸张往上走一行,是为“馈行”,也叫“换行”。

如果要“换行回车” —— 将上面的(A)、(B)步骤次序对调。







论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
106 [报告]
发表于 2012-10-03 01:56 |只看该作者
本帖最后由 Ager 于 2012-10-03 10:09 编辑

正文第502页,问题11(此处版式脱漏),《关于ISO》

幸甚,pm大虾澄清了一个广泛的谬识,即把国际标准化组织的缩略称呼“ISO”理解为“International Standard Organization”。

而且,大虾揭示了:“ISO”是由希腊语单词“isos”而来,“isos”的意思是“the same”。

下面我来扯一扯,补充一下,这样对于那些想当然抱持谬识的人,或许更有一些说服力。

(1)“ISO”的确由希腊语单词“ἴσος”(拉丁字母转写为“isos”)而来。

(2)ἴσος是形容词,义为“equal”、“same”。新约圣经的《马太福音》20:12用到了这个词(援引Westcott/Hort w/ Diacritics本):

λέγοντες· οὗτοι οἱ ἔσχατοι μίαν ὥραν ἐποίησαν, καὶ ἴσους ἡμῖν αὐτοὺς ἐποίησας τοῖς βαστάσασιν τὸ βάρος τῆς ἡμέρας καὶ τὸν καύσωνα.

CUV译文:我们整天劳苦受热。那后来的只做了一小时,你竟他们和我们一样么?

(3)在现代英语中,有不少单词,具有“iso-”、“is-”这样的前缀,均由该希腊语单词转化而来,比如:

isosceles((三角形)等腰或等边的)、isobar(等压线)、isobath(等深线)、isobits(等值比特)、isometric(等轴的)、isacoustic(等音强的)……

还有一点,在大虾的书中的引文中(包括在第493页的),将“Organization”拼成“Orgnization”,不知是大虾所批的书中原文如此,还是排字脱失。





论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
107 [报告]
发表于 2012-10-03 02:49 |只看该作者
回复 105# Ager


    这玩意儿原理是啥?看起来每个字符的offset都不一样,怎么打到同一个位置的?

论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
108 [报告]
发表于 2012-10-03 03:02 |只看该作者
本帖最后由 Ager 于 2012-10-03 03:10 编辑
starwing83 发表于 2012-10-03 02:49
回复 105# Ager

这玩意儿原理是啥?看起来每个字符的offset都不一样,怎么打到同一个位置的?


@starwing83

大虾你仔细看哦……

那个我所说的长得像百叶窗的金属部分,是由许多“骨头”组成的。“骨头”的根部,连在一个弧形的轴上。“骨头”与轴的交点,就是“骨头”翻打起来的支点。如你所见,每根“骨头”的支点不重合、没有交于一点,即offset递增。

而每根“骨头”的顶端,长着一个“牙齿”,就是该根“骨头”翻打起来敲击色带的部分,也就是用来给各字符成形的“铅字”。

但是,你注意看哦,从左到右,各“牙齿”的厚度,是递增的 —— 奥秘就在这里:)






论坛徽章:
11
摩羯座
日期:2013-09-16 11:10:272015亚冠之阿尔萨德
日期:2015-06-12 22:53:29午马
日期:2014-04-15 11:08:53亥猪
日期:2014-03-02 23:46:35申猴
日期:2013-12-06 22:07:00亥猪
日期:2013-11-28 12:03:13双鱼座
日期:2013-11-21 14:43:56亥猪
日期:2013-10-23 10:55:49处女座
日期:2013-10-17 18:15:43午马
日期:2013-09-27 17:40:4215-16赛季CBA联赛之青岛
日期:2016-06-22 00:45:55
109 [报告]
发表于 2012-10-03 03:16 |只看该作者
本帖最后由 Ager 于 2012-10-03 03:18 编辑

@starwing83

上面这种“排骨式”的打字头,是由传统机械打字机承袭过来的。

在UNIX诞生的年代,另一种打字头,已经很时兴了。如下图:



—— 它有一个很独特的俗称:菊花头




论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
110 [报告]
发表于 2012-10-03 03:21 |只看该作者
回复 108# Ager


    擦……刚刚逛淘宝,犹豫是不是买个回来研究研究……原来是这样…………

首先是个圆弧,打字位置在圆弧的“圆心”处,所以大体位置是一样的,而且不会纠缠。

然后,虽然是圆弧,但是其支点存在offset(必须得有),这个offset被铅字柄的厚度抵消了……

谁设计的?妖孽哇……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP