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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 缤纷落叶   /  2015-3-29 16:43  /  10013 人查看  /  44 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

胡树泉 发表于 2015-3-29 22:20
这个首先需要明确for(;;)是一个无限循环,而语句x=x++相当于x=x;x=x+1.也就是说x先将当前的值0赋值给本身,然 ...

个人感觉你的答案比较正确
回复 使用道具 举报
x = 0;
for(;;)
{
    x = x++;
}

在这个死循环中的执行流程如下:
1、先执行x++表达式,x++表达式的值 为x当前的值 为0,
2、然后会去执行x=x+1的操作,x = 1;
3、再后会将1中x++表达式的值0取出来给变量x, 那么x由1变为0了。
4、输出x的值 ,自然就是0咯
循环会一直重复以上四步过程,所以会一直输出0的
回复 使用道具 举报
在这里其实就是看x=++x和x=x++的,前者先自增再赋值,因此每次循环,后面将比前面的x大1,而后者是先赋值再自增,也就是每次将x=0赋值给x,所以打印的永远是0.
回复 使用道具 举报
for(;;)的意思是无条件循环
x=x++;的意思是先把x的值赋给x(x=0)输出的就是这个x,所以x=0;,然后x加1,但这个x不输出,
因为x是基本数据类型 所以x的值不会改变(基本数据类型传递不会改变原来的值),而引用数据类型传递会改变原来的值
回复 使用道具 举报
123
您需要登录后才可以回帖 登录 | 加入黑马