A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
class A{
public static void main(String[] agrs){
int x=0;
for(;;){
x=x++;
System.out.println(x);
}
}
}


最佳答案

查看完整内容

首先,将x的值保存起来,然后x加加,之后再将保存起来的x值赋给x。

点评

x++和++x的区别  发表于 2015-6-2 13:09

44 个回复

倒序浏览
首先,将x的值保存起来,然后x加加,之后再将保存起来的x值赋给x。
回复 使用道具 举报
本帖最后由 chenlanaq 于 2015-3-29 17:03 编辑

x++是先存好x的值0,然后将x自加=1,再然后将储存的0返回,结果是x=0;看过c++的运算符重载就知道什么回事了。
回复 使用道具 举报
向天笑 来自手机 中级黑马 2015-3-29 18:18:37
板凳
debug as运行看看就知道了
回复 使用道具 举报
for(;;){
x=x++;
System.out.println(x);
}

这里是一个死循环,一直不停打印0的,这几行代码就和
while(true)
{
System.out.println(x);
}

一个效果。
回复 使用道具 举报
x=x++的运算过程是:
int temp = x ;//这时temp = 0
x +=1 ;//这时x = 1
把temp的值赋给等号左面,x = 0。

更复杂一点的题目:
int x = 5 ;
x=x+ (x++) + (++x) ;
运算过程是:
temp = 5
temp = 5 + 5
x +=1 ;//运算x++ ,这时x=6
x +=1 ;//运算++x ,这时x=7
temp = 5 + 5 +7
把temp的值赋给等号左面,x = 17。

满意的话给个分。
回复 使用道具 举报
死循环
回复 使用道具 举报
for循环你好歹给个出口呀,一直这么死循环…
回复 使用道具 举报
死循环啦
回复 使用道具 举报
One_M 中级黑马 2015-3-30 10:25:13
10#
x=0,   x=x++    对于x++是先赋值再自增,So   x=x++是x=0  ==》0++    0++并没有再赋值给X  所以,在这个循环中x值一直都是0....   
回复 使用道具 举报
这个看下for的后跟括号内没有任何条件,是个死循环,看第一次运行,x=x++;初始值为零,x++是先赋值再自增,所以输出的x还是零,返回的话,因为for循环没有条件干涉,所以他会一直死循环下去
回复 使用道具 举报
每一次的循环都有X自加1,当是X是先赋值再自加,所以每次赋值后保存下来的X都是0,而加一后的那个X都不保存
回复 使用道具 举报
亲,你的程序中没有循环控制条件,会一直执行,输出x的值,死循环。
回复 使用道具 举报
死循环。
回复 使用道具 举报
for(;;)
{
}
你这个里面没有循环条件,当然就不会运行x++ 啊,x就是你赋值的初始值0咯。
回复 使用道具 举报
如果把x=x++换成x=++x你试试,或者直接x++,就会递增了,但是是无限循环
回复 使用道具 举报
本帖最后由 呐拽 于 2015-3-31 23:09 编辑

问题出现在x = x++;这个语句上 先是执行把自身的0赋给x,x=0,之后再执行++操作。由于一个语句只能给一个变量赋值一次。所以++之后的不会赋值给x。所以x是0.
回复 使用道具 举报
这个程序是一个死循环,因为你的for语句中没有给定该程序循环的条件,虚拟机调用运行循环语句时没有出口,x++ 不会自增,x就是你赋值的初始值0不会被改变。
回复 使用道具 举报
这种问题真的会给技术分吗。。:P等待结果
回复 使用道具 举报
死循环呀呀呀
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马