为什么 i 仍旧是 5 ,已经 ++ 了 呀

iamsea11 2003-08-20 10:57:32
int i=5;
int i=i++;
Console.WriteLine((i);

i++ 后 应该 i =6
...全文
44 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
calmzeal 2003-08-20
  • 打赏
  • 举报
回复
i=i++;
first do i++
then i is 6
but i=i++ is to give the original i to i
that is 5
01101230 2003-08-20
  • 打赏
  • 举报
回复
反汇编的情况:
int i=5;
0000007c mov esi,5
i=i++;
00000081 mov ebx,esi
00000083 inc esi
00000084 mov esi,ebx
System.Console.WriteLine(i);
00000086 mov ecx,esi
可以看到实际上i原来的值被放到ebx里保存起来了。然后执行了i++;此时i=6;最后执行
mov esi,ebx 才最后把保存起来的值(5)又还原给等号左边的的变量(i)所以i=5
snla 2003-08-20
  • 打赏
  • 举报
回复
改为++i
panyee 2003-08-20
  • 打赏
  • 举报
回复
int j = i++; //这时肯定是5

如果

i++;//先自加
int j = i;//这时才是6
jiezhi 2003-08-20
  • 打赏
  • 举报
回复
++在前則先加,再使用﹔++在后,則先使用再加
jiezhi 2003-08-20
  • 打赏
  • 举报
回复
++在前則先加,再使用﹔++在后,則先使用再加
csdn_bob 2003-08-20
  • 打赏
  • 举报
回复
i=i++;
这一句相当于
i=i+1;
i=5;
因为它是先取得i=5,然后i自加=6,然后将取出的5给i!

BeyondLove2000 2003-08-20
  • 打赏
  • 举报
回复
首先,不能再定义int型的i;
其次,i++; 即可不必i=i++; =比++有限级高,赋值后才++的,所以值不变。
rouser 2003-08-20
  • 打赏
  • 举报
回复
為什麼會出現兩次定義?
vikey 2003-08-20
  • 打赏
  • 举报
回复
同意 panyee(快乐王子)
01101230(叶开)用的反汇编,呵呵

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧