运算符自增问题: http://blog.csdn.net/zhaoming262350/article/details/8220361 i=5,进行i++运算时,先赋值后运算,所以 i+(i++) =5+5,而当执行完i++后,i=6,等到执行++i时,要先进行运算后进行赋值,所以加在5+5后面的值是7 就是5+5+7 public class TestS { public static void main(String [] args) { int i=5; int n=i+(i++)+(++i);
System.out.println(n); } }
5+5+7,第一个i是不变的,第二个i++的意思是,先操作再加1,第三个则是先加1再操作, n = i + (i++) + (++i)可以写为:n = i + i; i = i +1; i = i +1; n = n + i;
int i=5; int n=i+(i++)+(++i); 这个应该是先算括号里的和自加 也不是说先算(++i)和(i++) 即先算++i和i++ 这两个里面一个是先赋值后运算,一个是先运算后赋值 所以运算里的i++可以先不考虑其运算过程,当i来使用即可 这时n=i+(i++)+(++i)就成了n=i+i+i,而因为++i是先赋值后运算,导致这里的i成了i=i+1然后才参与运算 即n=i+i+i这里的i是先执行了i=i+1后的,所以n应该是18
int i1 = 0;
int i2 = 0;
i1 = i++; //等同于i1=i;i=i+1;
i2 = i++; //等同于i2=i+1;i=i+1;
int i=5;
int n=i+(i++)+(++i);
我是这么理解的:
i++ 中的i是5,但运算过后是6,i++是先赋值再进行运算
++i 前面i运算过后是6,先加1,那么i就7
所以是 5+5+7
若int n=i+(++i)+(i++) 就是5+6+6
如果你把 i,i++,++i的位置换一下肯定会得不同的结果
i++是先运算后加1,++i是先加1后运算
所以n=i+(i++)+(++i)是n=5+5+7
开始i=5;
根据+的结合顺序
所以 第一个i=5;
第二个i++;使i=6;
则 第三个 ++i;i=7;计算时也为7
http://blog.csdn.net/zhaoming262350/article/details/8220361 i=5,进行i++运算时,先赋值后运算,所以 i+(i++) =5+5,而当执行完i++后,i=6,等到执行++i时,要先进行运算后进行赋值,所以加在5+5后面的值是7 就是5+5+7
public class TestS
{
public static void main(String [] args)
{
int i=5;
int n=i+(i++)+(++i);
System.out.println(n);
}
}
n = i + (i++) + (++i)可以写为:n = i + i;
i = i +1;
i = i +1;
n = n + i;
int n=i+(i++)+(++i);
这个应该是先算括号里的和自加
也不是说先算(++i)和(i++) 即先算++i和i++ 这两个里面一个是先赋值后运算,一个是先运算后赋值
所以运算里的i++可以先不考虑其运算过程,当i来使用即可
这时n=i+(i++)+(++i)就成了n=i+i+i,而因为++i是先赋值后运算,导致这里的i成了i=i+1然后才参与运算
即n=i+i+i这里的i是先执行了i=i+1后的,所以n应该是18