问一道计算机等级考试题目,求详解

i=3,则k=(i++)+(++i)+(i++),K=多少?求详解... i=3,则k=(i++)+(++i)+(i++),K=多少?求详解 展开
 我来答
a5894112
2015-11-26
知道答主
回答量:17
采纳率:0%
帮助的人:7.6万
展开全部

编译了查看汇编,代码如下:


//执行一次++i

009A884F  mov         eax,dword ptr [i]      //eax = 3    

009A8852  add         eax,1                          //eax = 4

009A8855  mov         dword ptr [i],eax      // i = 4


//将i 的值带入式子中运算

009A8858  mov         ecx,dword ptr [i]      //ecx = 4

009A885B  add         ecx,dword ptr [i]      //ecx = 8

009A885E  add         ecx,dword ptr [i]      //ecx = 12

009A8861  mov         dword ptr [k],ecx     // k = ecx = 12


//执行i++

009A8864  mov         edx,dword ptr [i]      // edx = 4

009A8867  add         edx,1                          // edx = 5

009A886A  mov         dword ptr [i],edx      // i = 5

//执行i++

009A886D  mov         eax,dword ptr [i]      // eax = 5

009A8870  add         eax,1                          // eax = 6;

009A8873  mov         dword ptr [i],eax      // i = 6;


从上面的代码看出,在运算时先执行了++i这个式子,然后将i的值带入式子中计算,最后才计算i++。所以说++i你可以看成是一个在带入式子之前的自增函数,而i++则是所有运算完成后再运算的自增函数。所有运算过程可以这么来看:

  1. 计算有几次++i,得到i的值.

  2. 将i的值带入运算式子中计算k的结果

  3. 计算i++;得到i的最终结果

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式