chinalei
驱动小牛
驱动小牛
  • 注册日期2003-05-07
  • 最后登录2008-11-20
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:2397回复:20

小题,各位猜一下编译完成后的输出结果,猜对有分,哈哈!

楼主#
更多 发布于:2004-10-13 16:59
int i=1,j=2;
j=!j&&i++;
程序执行完上面语句后的i和j应该是多少啊?
生活咋能这样呢!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-10-13 19:12
i = 1, j = 0
j = 0可以理解
但i=1却想不明白
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-10-13 19:16
编译后的汇编语言如下,看不懂的说
175:      int i = 1, j = 2;
00401C9D   mov         dword ptr [ebp-8],1
00401CA4   mov         dword ptr [ebp-0Ch],2
176:      j = !j && i++;
00401CAB   cmp         dword ptr [ebp-0Ch],0
00401CAF   jne         CSasdsdDlg::OnButton1+4Ah (00401cca)
00401CB1   mov         eax,dword ptr [ebp-8]
00401CB4   mov         ecx,dword ptr [ebp-8]
00401CB7   add         ecx,1
00401CBA   mov         dword ptr [ebp-8],ecx
00401CBD   test        eax,eax
00401CBF   je          CSasdsdDlg::OnButton1+4Ah (00401cca)
00401CC1   mov         dword ptr [ebp-10h],1
00401CC8   jmp         CSasdsdDlg::OnButton1+51h (00401cd1)
00401CCA   mov         dword ptr [ebp-10h],0
00401CD1   mov         edx,dword ptr [ebp-10h]
00401CD4   mov         dword ptr [ebp-0Ch],edx
meteor
驱动大牛
驱动大牛
  • 注册日期2001-12-10
  • 最后登录2009-08-14
  • 粉丝0
  • 关注0
  • 积分280分
  • 威望62点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-10-13 21:36
j=0了,i++就不用执行了。
流星一剑 天才的人是流星,注定要燃烧自己以照亮他们的世纪。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-10-13 21:44
&&运算的时候,如果前面的已经是0了,后面的就会跳过
就是meteor说的 :D
link_bridge
驱动巨牛
驱动巨牛
  • 注册日期2002-11-28
  • 最后登录2011-05-15
  • 粉丝0
  • 关注0
  • 积分31分
  • 威望13点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-10-13 23:11
不懂
 :cool: :cool: :cool: :cool:
jec017
驱动太牛
驱动太牛
  • 注册日期2002-08-22
  • 最后登录2008-01-09
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望10点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-14 10:33
j=0了,i++就不用执行了。


高手啊!!!
s_6666_s_qd
驱动巨牛
驱动巨牛
  • 注册日期2004-08-14
  • 最后登录2006-07-11
  • 粉丝0
  • 关注0
  • 积分199分
  • 威望22点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-14 11:00
强!!!!
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-14 11:05
&&运算的时候,如果前面的已经是0了,后面的就会跳过
就是meteor说的 :D


呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。
lucaer
驱动老牛
驱动老牛
  • 注册日期2004-09-21
  • 最后登录2007-09-26
  • 粉丝0
  • 关注0
  • 积分518分
  • 威望60点
  • 贡献值0点
  • 好评度48点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-10-14 11:06
晕 都是小菜啊
只要回帖,别忘给分。 支持灌水,多多送分。 [img]http://www.hotik.com/sign.png[/img]
jinghuiren
驱动巨牛
驱动巨牛
  • 注册日期2002-06-01
  • 最后登录2008-10-27
  • 粉丝0
  • 关注0
  • 积分291分
  • 威望460点
  • 贡献值0点
  • 好评度428点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-10-14 11:13
晕 都是小菜啊


大菜来了,兄弟们闪!~~~~~~ :D
chinalei
驱动小牛
驱动小牛
  • 注册日期2003-05-07
  • 最后登录2008-11-20
  • 粉丝0
  • 关注0
  • 积分18分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-10-14 12:46
这是编译器优化造成的!
生活咋能这样呢!
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
12楼#
发布于:2004-10-14 13:20
编译后的汇编语言如下,看不懂的说
175:      int i = 1, j = 2;
00401C9D   mov         dword ptr [ebp-8],1
00401CA4   mov         dword ptr [ebp-0Ch],2
176:      j = !j && i++;
00401CAB   cmp         dword ptr [ebp-0Ch],0  
00401CAF   jne         CSasdsdDlg::OnButton1+4Ah (00401cca)   ; j!=0 jne
00401CB1   mov         eax,dword ptr [ebp-8]
00401CB4   mov         ecx,dword ptr [ebp-8]
00401CB7   add         ecx,1
00401CBA   mov         dword ptr [ebp-8],ecx
00401CBD   test        eax,eax
00401CBF   je          CSasdsdDlg::OnButton1+4Ah (00401cca)
00401CC1   mov         dword ptr [ebp-10h],1
00401CC8   jmp         CSasdsdDlg::OnButton1+51h (00401cd1)
00401CCA   mov         dword ptr [ebp-10h],0
00401CD1   mov         edx,dword ptr [ebp-10h]
00401CD4   mov         dword ptr [ebp-0Ch],edx
 

这不是很清楚了吗?
j!=0,i++就不执行了!
Leopard
驱动老牛
驱动老牛
  • 注册日期2001-07-13
  • 最后登录2021-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望53点
  • 贡献值0点
  • 好评度19点
  • 原创分0分
  • 专家分0分
  • 社区居民
  • 忠实会员
13楼#
发布于:2004-10-14 13:24
以前看过一些用c编的变态程序,那些狂人们编的些程序简直就是天书,那个累啊!他们还组织这种比赛,ft!
guoxh9
驱动太牛
驱动太牛
  • 注册日期2003-10-13
  • 最后登录2011-10-14
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2004-10-14 13:44
以前看过一些用c编的变态程序,那些狂人们编的些程序简直就是天书,那个累啊!他们还组织这种比赛,ft!
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
15楼#
发布于:2004-10-14 19:31
很简单的东西有什么不理解的呢??
if (a&& b && c &&d......)
只要第一个a为0  那么后面的不管如何总的结果都是0 的所以后面都不用做,直接属于条件不满足,同样
if (a|| b || c ||d......)
只要a为1后面的不管如何,最后结果都为非0,直接属于条件满足
道理简单的很



[编辑 -  10/14/04 by  wowocock]
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
16楼#
发布于:2004-10-14 19:33
[quote]&&运算的时候,如果前面的已经是0了,后面的就会跳过
就是meteor说的 :D


呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。 [/quote]
如果有编译器不那么做,那么他就是垃圾......
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
lxysxlxy
驱动老牛
驱动老牛
  • 注册日期2003-07-08
  • 最后登录2010-11-15
  • 粉丝0
  • 关注0
  • 积分1112分
  • 威望2089点
  • 贡献值0点
  • 好评度1112点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2004-10-15 00:08
very 间单
驱动论坛报纸专区,来看看 http://bbs.zndev.com/thread.php?fid=95 [img]http://bbs.zndev.com/attachment/69_15763.gif[/img] [img]http://bbs.zndev.com/attachment/69_62412_1cd9b72a5349e45.jpg[/img] 军方⋯⋯⋯⋯接管
cloud_zhou2000
驱动老牛
驱动老牛
  • 注册日期2002-10-31
  • 最后登录2011-03-31
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2004-10-15 07:35
直接用汇编就不会出现这种情况了。
cn18799
驱动老牛
驱动老牛
  • 注册日期2001-11-17
  • 最后登录2010-04-16
  • 粉丝0
  • 关注0
  • 积分54分
  • 威望36点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2004-10-15 07:53
[quote][quote]&&运算的时候,如果前面的已经是0了,后面的就会跳过
就是meteor说的 :D


呵呵,这个解释比较合理,不过说不定这个跟编译器是有关系的。 [/quote]
如果有编译器不那么做,那么他就是垃圾...... [/quote]

问题是有的编译器先做左边,有的编译器先做右边。。。
所以这样的程序还是不写为好。。。
[img]http://www.danasoft.com/vipersig.jpg[/img] [img]http://www.driverdevelop.com/forum/upload/cn18799/2002-09-28_logo.gif[/img]
上一页
游客

返回顶部