黑马程序员技术交流社区
标题:
这个问题百思不解
[打印本页]
作者:
dragonsoull
时间:
2015-8-7 10:52
标题:
这个问题百思不解
class Test2
{
public static void main(String[] args)
{
for(int i=0;i<20;i++){
int x = 0;
x = (x++)%2;
System.out.println(x);
}
}
}
为什么打印出来的x 始终是零??
作者:
boboyuwu
时间:
2015-8-7 10:55
你真是我的哥 你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等于几
作者:
冲吧,小怪兽
时间:
2015-8-7 11:37
因为你变量x初始化是在for循环内部,不管你做任何运算你最终结果都是0
作者:
段燚涛
时间:
2015-8-7 11:49
亲,你错了,把x的定义(int x =0)这句放到for循环前面去。这是变量的作用域的问题!!
作者:
Clouddd
时间:
2015-8-7 12:00
同意楼上的说法,那我就一步一步说给你听啦~
首先进入循环给x赋值为0
然后是x = (x++)%2;
这里等号右边x先对2取余,结果是为0,这时候x再自加一,然后再用0给x赋值
过程等于{
x = 0%2;
x ++;
x = 0;
所以最后x还是为0
}
然后问题来了!!!
继续循环,你又 int x = 0;等于重新定义了一遍x,所以会不断重复上面我说的步骤。。
希望对你有用~最后祝学习愉快
作者:
kingxiao
时间:
2015-8-7 12:47
X每次都是从0开始好吧 ,把X放到FOR循环外就好了
作者:
小丑
时间:
2015-8-7 12:58
把x这个变量定义在for循环外面看看呢。。。。。。。
作者:
wang949055945
时间:
2015-8-7 16:26
把int x =0;放在for循环的外面就可以了
作者:
yongaidongbing
时间:
2015-8-7 16:29
。。。。。。。。。。。。。。。。
作者:
kenfans
时间:
2015-8-7 16:40
其实我还以为会出现1的,不过for里面每次都初始化,也有点
作者:
godboy001
时间:
2015-8-7 18:52
哈哈哈,百思不得其解.....
作者:
dragonsoull
时间:
2015-8-7 18:59
boboyuwu 发表于 2015-8-7 10:55
你真是我的哥 你执行了20次for循环每次都将x初始化为0然后执行了20次x=0++%2 也就是x=0%2,你觉得这答案等 ...
- -! 晕了!!!!自己居然没发现!!!
作者:
陈化身1
时间:
2015-8-7 21:19
你这x和i一点关系都没有
作者:
高山高水高小波
时间:
2015-8-7 21:29
for循环有没有都一个样啊
作者:
CharnLau
时间:
2015-8-7 22:30
每次循环都给x赋值成0- -!
作者:
zhaoyue
时间:
2015-8-7 22:36
。。。。。。。。。。。。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2