这段代码里—— int i=3;
int j=i++;//i=4,j=3
int k=++i;//i=5,k=5第一个问题:书上说++的意思为自加1,那么上面的代码i的值为3,自加1后得4,在将i的值赋给j、结果应该是j和i都为4,怎么i等于4,j=3呢?第二个问题:i++和++i有什么不同?谢谢前辈们了!
int j=i++;//i=4,j=3
int k=++i;//i=5,k=5第一个问题:书上说++的意思为自加1,那么上面的代码i的值为3,自加1后得4,在将i的值赋给j、结果应该是j和i都为4,怎么i等于4,j=3呢?第二个问题:i++和++i有什么不同?谢谢前辈们了!
int k=++i; //先为i自增1,再做k=i(自增后的i)运算。
但是表达式i++和++i的的值就不一样了.
如果理解不了x++,和++x 你可以将这两个当作两个static method
int x++(int number){
//先返回number,函数运行结束后 number=number+1
}int ++x(int number){
//计算number,number=number+1
//返回number
}
等价
{
int j=i;
i=i+1;
}int j=++1;
等价
{
i=i+1;
j=j+i;
}
如你的程度里J=i++;的意思是先将i的值3赋给j(即j=3),后再加1.
故J=i++;这个语句执行完后i的值才变为4.++i ::的意思是先使i的值加1,后再使用.
即,J=i++;这个语句执行过程是:先将i的值加1(即i=4),再赋给j(即j=4).
++i就是i先加1,再拿去用
这样够通俗了
i = i;
i = i + 1;++i
i = i + 1;
i = i;
这是这两个操作的执行过程, a int i=3;
b int j=i++;//i=4,j=3
c int k=++i;//i=5,k=5 执行过程如下
1 int i = 3; 2 int j = i; // j=3
3 i = i + 1; // i=4 4 i = i + 1; //i=5;
5 int k = i; //k=5;b 相当于 1,2两句的效果
c 相当于 4,5两句的效果