免费注册 查看新帖 |

Chinaunix

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

一段关于运算符和结合性奇怪的程序(高人请教) [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-12-27 23:43 |只看该作者
++c == c++

首先进行++C运算得到C的值为1,
C++的时候值也仍然为1。
所以条件为真额。

论坛徽章:
0
32 [报告]
发表于 2010-12-28 06:35 |只看该作者
回复  KBTiller


    如果KBTILLER您能把类似的这么一段代码用反汇编的方式呈现出来,那就好了,不知道 ...
venkee 发表于 2010-12-27 23:12


    哦,我不能那样做。
    曾经有网友对《狂人C》提出过这样的建议:
   
紧紧抓住抽象这个角度去阐述高级语言。有太多的书动不动就使用底层原理去诠释高层概念,还往往沉迷其中,自以为挖掘到了深层内涵,不仅贻误了自己,还“带坏”了广大读者,让他们一开始就迷失了方向;

     我的理解,用汇编来解释C应该类似于“使用底层原理去诠释高层概念”。C在本质上是对汇编的一种恰到好处的“抽象”,这种抽象并非是与汇编绝对一一对应的。
     如果你浏览一下CU历史上的帖子,就会发现,许多网友非常反对用汇编来解释C语言的语义。 (最近的一次讨论可见http://bbs.chinaunix.net/thread-1834663-1-1.html

论坛徽章:
0
33 [报告]
发表于 2010-12-28 09:33 |只看该作者
在一个序列点内,对C赋值两次,是未定义行为,一旦出现未定义行为,一切都是未定义的,不会出现其中的一 ...
madoldman 发表于 2010-12-27 22:47


是的,我也是这么认为。

我果然没说明白。。我是针对Magic_LP的下面这个问题来说的:
那请教下venkee为什么C和D的值为什么不一样?
因为D=C++这个表达式的返回值是自增后的C?


Magic_LP似乎对D=C++这个单独的表达式本身有疑问。 也可能是我理解差了。

论坛徽章:
0
34 [报告]
发表于 2010-12-31 10:57 |只看该作者
int C = 10;
C=++C; 结果难道不是11嘛?还有可能是其它的值?

论坛徽章:
0
35 [报告]
发表于 2010-12-31 12:45 |只看该作者
莫非这就是传说中的yjt

论坛徽章:
0
36 [报告]
发表于 2010-12-31 20:48 |只看该作者
要想真正理解,就只有反汇编出来……

  1. if (++C == C++) ...
复制代码

我的理解是,此句相当于:
  1. ++C;
  2. if (C == C) ...
  3. C++;
复制代码

论坛徽章:
1
2015年迎新春徽章
日期:2015-03-04 09:58:11
37 [报告]
发表于 2011-01-04 23:53 |只看该作者
感觉争论这个意义不大,有空的可去看看编译原理。代码无论写成怎样,还是经过编译,再执行的。

论坛徽章:
27
CU大牛徽章
日期:2013-03-13 15:15:08CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-09-18 15:24:09CU大牛徽章
日期:2013-09-18 15:24:20CU大牛徽章
日期:2013-09-18 15:24:25CU大牛徽章
日期:2013-09-18 15:24:31CU大牛徽章
日期:2013-09-18 15:24:36CU大牛徽章
日期:2013-09-18 15:24:41CU大牛徽章
日期:2013-09-18 15:24:48CU大牛徽章
日期:2013-09-18 15:24:52处女座
日期:2013-09-27 17:45:43
38 [报告]
发表于 2011-01-05 12:51 |只看该作者
这样写代码的人肯定会被踢出公司去,这是在炫技术吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP