请问i=i++的问题

[复制链接]
查看11 | 回复9 | 2007-10-15 12:41:14 | 显示全部楼层 |阅读模式
i = 1;
i = i++;
结果是1,想了很久都不太明白,请问有人知道吗?
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
先搞清i++和++i 的区别
就知道为什么了。
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
如果i++;print(i),结果是2,i=i++;print(i);结果是1,还是不明白。
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
其实这是个简单问题啊。
i++返回i的当前值,然后再自增。
++i表示先自增,然后返回自增后的i值
所以i++; print(i); 第一句把i自增了,返回值被忽略,第二句打印,这时i已经完成自增,当然是2了。
i=i++;print(i);第一句赋值的优先级高于++,所以首先赋值,把i的值赋给i,这样i还是1,然后右边的i自增,但是i是简单类型,不是引用啊,所以这个自增不会影响刚才的赋值操作。最后结果就是1。
不过这种代码自己写程序不可能写出来,如果看到别人写了这样的代码,你就只管鄙视他吧。哈哈。
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
呵呵,有点明白了。
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
这种代码基本只有测试题里会出现了
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
en
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
这是一个最基础的编程问题,有很多的语言都是这样的,c,c++等。
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
i=i++;是先赋值后自增,而i=++i;是先自增后赋值!
回复

使用道具 举报

千问 | 2007-10-15 12:41:14 | 显示全部楼层
clkrst和gax1227 都解释的比较清楚了
呵呵楼主程序语言基础欠佳啊!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行