正值招工季,我来给大家出一道题,关于i++的问题
int x = 0;
for(int i=0; i<100; i++) {
x = x++;
}
System.out.println(x);
x = 0;
x = x++ + ++x;
System.out.println(x);
自己复制后运行吧,骚年,欢迎大家踊跃讨论。
java i++
------解决方案--------------------
还记得以前学C语言的时候为++问题和同学争论不休。。。
------解决方案--------------------
目测0,1.。
具体运行一下。。。
原来是0,2。
------解决方案--------------------
求讲解。。。
int x = 10;
int y = x++;
System.out.println(y); // 10;
System.out.println(x); // 11;
int a = 10;
int b = ++a;
System.out.println(a); // 11;
System.out.println(b); // 11;
/*
我搜了网上的讲解大多事理解为
x++; 先在x所在的表达式中使用x的当前值,后让x加1
++x; 先把x的值加1,然后在运算中使用x的新值
我也是这样理解的
*/
在看他的代码:
int x = 0;
for(int i=0; i<100; i++) {
// 这里x = x++;这句还没运行完,x的值为0;运行完了之后x的值不是应该加1的吗?
x = x++;
}
System.out.println(x);
x = 0;
// 这一句就完全不知道怎么拆开来解释了
x = x++ + ++x;
System.out.println(x);
------解决方案--------------------
循环里面等价于:
int tmp = x++;//此句结束后tmp=0,x=1;
x = tmp;//x重新复制为0
------解决方案--------------------
x=0
x = x++ + ++x;
运算总是从左往右一步一步:
上面等价于:
int x = 0;
int tmp1 = x++;//tmp1=0,x=1;
int tmp2 = ++x;//tmp2=2,x=2,++的优先级高
x = tmp1 + tmp2;//x=2