黑马程序员技术交流社区

标题: 一个比较基础的问题 [打印本页]

作者: 谢栋文    时间: 2012-4-11 16:25
标题: 一个比较基础的问题
int i = 10;
i = i++;
Console.WriteLine(i);//为什么输出的还是10?
Console.ReadKey();

作者: 谢栋文    时间: 2012-4-11 16:28
i=i++;
可以拆分成i=i;
i++;
不管怎么样最后i都自加了1次,我输出的i,难道这两个i不是同一个变量?
作者: 赵潮江    时间: 2012-4-11 16:53
i++的结果还是i。只有在下次用到i的时候i的值才有变化。
i=10,i++的时候返回结果是10,但是i的值变成了10,但是这个时候又将i赋值为i++,所以i的值还是没有变化。
作者: 徐瑞    时间: 2012-4-11 18:00
i++是后加。所以在进行语句运算时,i++取i原值参与运算。所以i=10.
可以前+一下,i=++i;就会在运算前加1.


作者: 马跃    时间: 2012-4-11 21:23
++i就会不同了……
作者: 陈世伟    时间: 2012-4-15 12:05
问题出在i=i++上了,你这样写,就会先把i的值赋给i,然后再+1,改成++i,就行了
作者: 王连    时间: 2012-4-15 14:42
您好,这是i++与++i的区别问题;首先“=”的运算级别低于“++”的运算级别,所以在进行计算的时候是先进行++运算然后再进行=赋值运算,而i=i++是把i自加前的值赋给i,如果你改成i=++i则是把i自加1后的值赋给i。我这样解释你可懂??
作者: 何圣东    时间: 2012-4-15 17:07
i = i++;这一句中i++的值还是10,所以...
把这句改成i++;会输出你想要的结果

作者: 过客    时间: 2012-4-15 17:47
你可以这样拆开了理解:
1、
int i=10;
i=i;
i++;
然后输出的结果是10。
2、
int i=10;
i++;
i=i;
输出的就是11.
作者: 郑森    时间: 2012-4-16 00:06
i++是先赋值在计算i还是10,下次再使用i 时=10.
作者: 王雪磊    时间: 2012-4-16 09:48
i=i++的意思是执行完i=i++执行完之后 i自加1,而在i没有加1之前把i++的值赋给前面的i了
所以就是10了,要是i=++i的话就不是10,而是11




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2