好奇怪的问题

bsdos123 2008-02-18 03:09:12
[cord]
int i=1;
i=i++;
print(i);


[/cord]

打印出来的为什么是1而不是2?
...全文
68 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuxo84 2008-02-18
  • 打赏
  • 举报
回复
赋值的时候其实就是:
之前先把i的值给了一个临时变量,最后再把这个临时变量的值交给要赋值的那个变量。
wuxo84 2008-02-18
  • 打赏
  • 举报
回复
楼主,俺的回答满意不?还有什么疑问大家一起探讨~
zhaining522 2008-02-18
  • 打赏
  • 举报
回复
那么j =i++ 相当于 j = i ; i+1; 喽?

是这样的 怎么看出来显然是不对的呢?

bsdos123 2008-02-18
  • 打赏
  • 举报
回复
以下是楼上说的话
其实也就是说 i = i++ 相当于 i = i ; i+1;


如果i = i++ 相当于 i = i ; i+1;
那么j = i++ 相当于 j = i ; i+1; 喽?

显然是不对的
i++和++i等我都知道,我不是初学者,我就是想不通i++有时是不是违背了先赋值后自增的说法了
枫叶rain 2008-02-18
  • 打赏
  • 举报
回复
j=i++;是先赋值,再增加1
j=++i;是先增加1,再赋值
zhaining522 2008-02-18
  • 打赏
  • 举报
回复
很简单

把这个代码给你拆开看你就明白了

int i =1;

i = i ;

i+1; 加1后没有赋给任何变量 所以i的值不变

print(i);


因为i的值没有变 所以输出的还是1

其实也就是说 i = i++ 相当于 i = i ; i+1;

wuxo84 2008-02-18
  • 打赏
  • 举报
回复
i++是这样的,一上来i=1;
在做i=i++之前,i先把它的值赋给一个临时变量比如说叫x,此时i=〉x;
然后i++,这时候i=2了;
但怎么体现“先操作后自增”呢?奥秘就在这:最后再把x赋给i,x=〉i,所以这个时候i又等于1了。


咱们防止混淆,可以这样

int i = 1;
a = i++;
print(a);

一上来i=1;
在做a=i++之前,i先把它的值赋给一个临时变量x,此时i=〉x,x=1了;
然后i++,这时候i=2了;
最后再把x赋给a,x=〉a,所以这时a=1。

所以表面上看上去是先做了赋值操作 之后再作自增操作!
以上仅供参考

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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