x++与(x++)

来源:互联网 发布:举牌制作软件 编辑:程序博客网 时间:2024/04/28 11:52

题目

int x = 4;int y = 4;x = (y++);cout<<x<<endl;

输出x为多少?

反汇编如下

int x = 4;013013DE  mov         dword ptr [x],4  int y = 4;013013E5  mov         dword ptr [y],4  x = (y++);013013EC  mov         eax,dword ptr [y]  013013EF  mov         dword ptr [x],eax  先赋值013013F2  mov         ecx,dword ptr [y]  再加1013013F5  add         ecx,1  013013F8  mov         dword ptr [y],ecx  
所以输出结果为4,括号在这里其实并不起作用。


我是这样理解的,由于y++的实现是返回一个临时变量,所以在自增之前值已经返回值用于赋值,所以自增对返回的值没有影响,因此结果和不加括号的y++是一样。


0 0
原创粉丝点击