免费注册 查看新帖 |

Chinaunix

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

[C] 以其昏昏,使人昭昭? [复制链接]

论坛徽章:
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
41 [报告]
发表于 2010-04-07 15:17 |只看该作者
首先我支持一下楼主:这种写法的确不好,但是你必须得告诉初学者:这样不好,并且还要说出不好的原因,这样才有进步,我最开始学C语言的时候也是看的谭书,书里面经常写“这样是错误的,那样是错误的”却不给出原因,到底是这么写不好,还是会有编译错误?不得而知。

推荐一下《C语言常见问题集》和《C专家编程》两本书,有很多内容很深刻。

其次帮楼主澄清一下:首先并不是能被编译通过的代码就一定没有错误,C语言标准里面有个东西叫做“未定义”,意思是如果你这么写了,那么编译器无论怎么处理都是正确的:因为C语言标准根本就没有定义这么做会怎样!显然“编译通过”也算是处理方式之一,但那不代表这么写是正确的。

a+=a*=a*a;

这个表达式的确是错误的,原因上面楼主说了。顺带说一下,楼主的英文不是随便写的。要注意C语言毕竟是老外发明的,而且C语言的权威标准也是用英文写的,楼主贴的是C语言的标准文档,什么叫标准?意思是如果你不照着那个文档来,你实现的语言根本就不配叫“C语言”这个名字!这个文档是受法律保护的,因此最好别随便翻译,大家能看懂就看,看不懂可以让别人解释一下下,但是直接翻译是不好的。

楼上有人问顺序点的详细定义,这在标准文档的附录里面写的非常详细,摘录如下:
Annex C
(informative)
Sequence points
1The following are the sequence points described in 5.1.2.3:
—The call to a function, after the arguments have been evaluated (6.5.2.2).
—The end of the first operand of the following operators: logical AND && (6.5.13);
logical OR || (6.5.14); conditional ? (6.5.15); comma , (6.5.17).
—The end of a full declarator: declarators (6.7.5);
—The end of a full expression: an initializer (6.7.; the expression in an expression
statement (6.8.3); the controlling expression of a selection statement (if or switch)
(6.8.4); the controlling expression of a while or do statement (6.8.5); each of the
expressions of a for statement (6.8.5.3); the expression in a return statement
(6.8.6.4).
—Immediately before a library function returns (7.1.4).
—After the actions associated with each formatted input/output function conversion
specifier (7.19.6, 7.24.2).
—Immediately before and immediately after each call to a comparison function, and
also between anycall to a comparison function and anymovement of the objects
passed as arguments to that call (7.20.5).


由此看出,这个表达式在一对顺序点之间改变了a两次,因此是个C语言根本没定义的操作,换言之:是错误的。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
42 [报告]
发表于 2010-04-07 15:55 |只看该作者
回复 35# yaoaiguo


男人上街穿裙子合法吗?肯定合法,

但是,你教你儿子穿裙子上街吗?

要是别人教,你让吗?

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
43 [报告]
发表于 2010-04-07 16:09 |只看该作者
回复  yaoaiguo


男人上街穿裙子合法吗?肯定合法,

但是,你教你儿子穿裙子上街吗?

要是别人教 ...
fender0107401 发表于 2010-04-07 15:55

苏格兰裙……你不让人家穿人家跟你急……

论坛徽章:
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
44 [报告]
发表于 2010-04-07 16:20 |只看该作者
而且初学者们也不是你儿子吧………………

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
45 [报告]
发表于 2010-04-07 16:21 |只看该作者
回复 43# flw

突然想起小沈阳来了,苏格兰**,哈哈。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
46 [报告]
发表于 2010-04-07 16:22 |只看该作者
回复 44# starwing83

打个比方吗,绝对没有想骂谁的意思。

论坛徽章:
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
47 [报告]
发表于 2010-04-07 16:25 |只看该作者
没,我不是这个意思,只是觉得如果是初学者,未必会来看大家的争论,这方面一直都是见仁见智的问题。

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
48 [报告]
发表于 2010-04-07 16:25 |只看该作者
你们真闲得蛋疼了,这些不知所谓的既不是错误又不是正路子的东西有必要辩个对错出来么?还是觉得自己是现代孔乙己,懂得回字的四种写法很了不起?{:3_204:}

论坛徽章:
0
49 [报告]
发表于 2010-04-07 16:27 |只看该作者
楼上好几位很清闲啊,尤其那个又贴了一大堆英文的,里面满眼都是参考xxx章节,copy起来容易,我可没功夫去翻。

多说无益,就等楼主的大作了。

如果楼主写不出来,那也没资格批评人家写的烂。

如果楼主写出来了,让我们见识见识写的咋样。

指手画脚的人见得太多了,真正做出来点东西的人太少了。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
50 [报告]
发表于 2010-04-07 16:47 |只看该作者
支持1楼和41楼。

版上sb太多, 交给你们调教了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP