码迷,mamicode.com
首页 > 其他好文 > 详细

发现一些容易忘记的细节

时间:2014-09-20 15:22:18      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:blog   http   2014   sp   log   c   r   bs   tt   

1:i++与++i

我们先看下结果 然后再看下汇编

int a = 0; int b = 0;
printf("刚开始 a = %d; b = %d; \n", a, b);
a = b++;
printf("a = b++ a = %d; b = %d; \n", a, b);
a = ++b;
printf("a = ++b a = %d; b = %d; \n", a, b);

bubuko.com,布布扣

接下来上汇编的图

bubuko.com,布布扣

从第三和第四行汇编可以看到 a = b++ 是先把b的值放入寄存器eax里 此时b = eax = 0 在把eax赋值给a 此时a = 0

第五行 把b的值放入寄存器ecx中 ecx = 0

第六行 把ecx和1累加 ecx = 0+1 = 1

第七行 把ecx赋值给b   ecx = b =1

 

总结如下:

单纯的i++ 等价于 ++i;

表达式中 是不一样的 a = i++  a = ++i   以及 i++和++i 作为函数参数 例如 fun(int a){...} main(){fun(i++);}

发现一些容易忘记的细节

标签:blog   http   2014   sp   log   c   r   bs   tt   

原文地址:http://www.cnblogs.com/huoxl/p/3983171.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!