| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1793 人关注过本帖
标题:i=i++*++i+i--*--i中,计算机只从哪一步先做?
只看楼主 加入收藏
luruinet
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2008-11-19
收藏
 问题点数:0 回复次数:7 
i=i++*++i+i--*--i中,计算机只从哪一步先做?
如题所示
搜索更多相关主题的帖子: 计算机 
2008-11-23 16:08
中学者
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:20
帖 子:3554
专家分:80
注 册:2007-9-14
收藏
得分:0 
未定义行为~~ 不用深究

樱花大战,  有爱.
2008-11-23 17:37
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
设 i = 5
  mov         eax,dword ptr [i]                 eax = 5
  add         eax,1             // ++i          eax = 6      
  mov         dword ptr [i],eax                 i = 6

  mov         ecx,dword ptr [i]                 ecx = 6
  sub         ecx,1             // --i          ecx = 5
  mov         dword ptr [i],ecx                 i = 5

  mov         edx,dword ptr [i]                 edx = 5
  imul        edx,dword ptr [i] // i*i          edx = 25

  mov         eax,dword ptr [i]                 eax = 5
  imul        eax,dword ptr [i] // i*i          eax = 25

  add         eax,edx           // i + i        eax = 50
  mov         dword ptr [i],eax                 i = 50

  mov         ecx,dword ptr [i]                 ecx = 50
  sub         ecx,1             // i--          ecx = 49
  mov         dword ptr [i],ecx                 i = 49

  mov         edx,dword ptr [i]                 edx = 49
  add         edx,1             // i++          edx = 50
  mov         dword ptr [i],edx                 i = 50
上面是那句代码在调试时的反汇编后的代码,可以看出顺序如下:
先计算两个前置运算( ++i ,  --i),这之后,i的值不变;
然后计算乘法运算  i*i
然后计算加法运算  i*i + i*i
最后计算后置运算符( i-- , i++ ),这样 i的值还是没变
2008-11-23 18:12
风居住的街道
Rank: 1
等 级:新手上路
帖 子:374
专家分:0
注 册:2008-10-24
收藏
得分:0 
LS:自作聪明……
2008-11-24 06:01
宝宝的编程之路
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2008-11-22
收藏
得分:0 
计算机看不懂,我也看不懂!!
2008-11-24 09:42
alweeq86
Rank: 2
等 级:论坛游民
帖 子:67
专家分:20
注 册:2008-9-14
收藏
得分:0 
后置++的优先级比前置的高
i=i++*++i+i--*--i;中i++和i--优先级高然后是++i和--i,不过同一个优先级时对于*这个二目运算符,先算*的左边还是右边没有规定,不能保证从左到右计算。
2008-11-24 10:46
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
调试一下吧,让实事说话
2008-11-24 11:25
huadiw
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2008-11-24 13:16
快速回复:i=i++*++i+i--*--i中,计算机只从哪一步先做?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031880 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved