首页
社区
课程
招聘
请教个i++问题,麻烦指点下!
发表于: 2011-7-25 18:16 3213

请教个i++问题,麻烦指点下!

2011-7-25 18:16
3213
自己想的是:++i先本身i+1再赋值就是6,后面一个++i就是7,那j应该是13啊。

但这运算结果:j = 14
 
是不是因为括号的2个++先运算,++i一次=6,再++i一次=7

最后再i=7 这个来算i+i = 7+7?

麻烦指点下,谢谢了!

#include <stdio.h>
main()
{
  int i = 5,j;
  j = (++i)+(++i);
  printf("%d",j);
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 156
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
9:      j = (++i)+(++i);
mov        eax,dword ptr [ebp-4]    //eax = i
add         eax,1                            
mov        dword ptr [ebp-4],eax    // i = i+1
mov        ecx,dword ptr [ebp-4]    // ecx = i
add         ecx,1
mov        dword ptr [ebp-4],ecx    // i = i+1
mov        edx,dword ptr [ebp-4]    
add         edx,dword ptr [ebp-4]   // edx = i+i
mov        dword ptr [ebp-8],edx

希望是你想要的,希望有用。
2011-7-25 18:35
0
雪    币: 76
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
http://wenwen.soso.com/z/q267213098.htm
2011-7-25 18:56
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
在同一个表达式中使用导致同一对象修改两次或修改以后又被引用的自增, 自减和赋值操作符的任何组合总是被认为未定义。
其处理权在于编译器,不同的编译器有不同的计算方法,等于什么都有可能。

这种j = (++i)+(++i);的写法一般多出现在考试中,标准的代码风格不会这么写。
2011-7-25 20:28
0
雪    币: 76
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
嗯啊! 谢谢!
2011-7-25 21:53
0
游客
登录 | 注册 方可回帖
返回
//