免费注册 查看新帖 |

Chinaunix

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

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

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

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:49:45
12 [报告]
发表于 2010-04-06 23:15 |只看该作者

  1. int a = 12;
  2. a+=a-=a*a;
复制代码
其实如果你认真看一下的话就会发现,这个表达式是一个正确的表达式,而且a的值是确定的,无论啥平台{:3_182:}{:3_193:}

论坛徽章:
0
13 [报告]
发表于 2010-04-06 23:20 |只看该作者
MD,上面的是没风格

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
14 [报告]
发表于 2010-04-06 23:31 |只看该作者
隱約覺得LZ的書會遭受更大的批判。

论坛徽章:
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
15 [报告]
发表于 2010-04-06 23:33 |只看该作者
其实如果你认真看一下的话就会发现,这个表达式是一个正确的表达式,而且a的值是确定的,无论啥平台{:3_182 ...
koolcoy 发表于 2010-04-06 23:15


这么写的都是贱人。

评分

参与人数 1可用积分 +2 收起 理由
Roemer + 2 我很赞同

查看全部评分

论坛徽章:
0
16 [报告]
发表于 2010-04-06 23:36 |只看该作者
本帖最后由 pmerofc 于 2010-04-06 22:17 编辑

应某出版社之约,拟就国内C语言“主流教材”中的错误、误导和不良风格等写点东西。
    在正式动笔之前和大家(除了“星宿”派的弱智以外)交流一下,非常希望能得到大家的批评、指正和建议。



  

QUOTE:赋值表达式也可以包括复合的赋值运算符。例如:
a+=a-=a*a
也是一个赋值表达式。如果a的初值为12,此赋值表达式的求解步骤如下:
①先进行“a-=a*a”的运算,它相当于a=a-a*a,a的值为12-144=132。
②再进行“a+=-132”的运算,相当于a=a+(-132),a的值为-132-132=-264。

p64,《C程序设计》(第三版),谭浩强 著,清华大学出版社,2005年7月第3版,2009年10月第26次印刷

评:“a+=a-=a*a”这个表达式本身就是错误的,怎么居然还能分析出求解步骤呢?
]


谭的书虽然写得不好,风格差

但:就你这个白痴水平,还评论别人,佩服你


看看编译器是怎样编译的:

  a+=a-=a*a;
010A34B5 8B 45 F8             mov         eax,dword ptr [a]  
010A34B8 0F AF 45 F8          imul        eax,dword ptr [a]  
010A34BC 8B 4D F8             mov         ecx,dword ptr [a]  
010A34BF 2B C8                sub         ecx,eax  
010A34C1 89 4D F8             mov         dword ptr [a],ecx  
010A34C4 8B 55 F8             mov         edx,dword ptr [a]  
010A34C7 03 55 F8             add         edx,dword ptr [a]  
010A34CA 89 55 F8             mov         dword ptr [a],edx  

--------------------------------------------------------------------
看看谭的分析,是错了还是对了

可能有些编译器会出现未定义行为

总比你一句话就说错误强多了,还评论,你不笑死人


我不是谭迷,只不过为他说了两句,就被你冠上谭迷,正白痴


真想,见你一次就骂你一次:白痴

论坛徽章:
0
17 [报告]
发表于 2010-04-07 03:01 |只看该作者
恩,确实没有语法错误,icc,gcc,vc优化下测试是正确的。

不过这种代码实在是没有办法看。写程序的人从一开始就应该被教导风格问题的重要性,这种习惯不是一朝一夕养成的,养成了又不是一朝一夕能换掉的

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

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

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
20 [报告]
发表于 2010-04-07 08:54 |只看该作者
纠缠于 a+=a-=a*a 对不对没有多少意义,实际上我们会避免类似的写法。LZ如果真要写书,建议还是不要写这方面的,教人一些细枝末节的东西,写不出好程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP