黑马程序员技术交流社区
标题:
关于死循环的问题如下代码
[打印本页]
作者:
荣凯旋
时间:
2011-12-22 09:52
标题:
关于死循环的问题如下代码
本帖最后由 荣凯旋 于 2011-12-22 10:20 编辑
class ForText8
{
public static void main(String[] args)
{
for( int i = 0 ; i < 10 ;i++ )
{
System.out.println(i);
i*=0.1 ;
}
}
}
为啥死循环结果是1,而不是0呢?
作者:
杨强
时间:
2011-12-22 09:57
这要先明确for循环的运行原理 for(变量,条件表达式,循环体结束一次后运行的表达式)
再看你的题 第一次循环i=0 打印 0 ,i*=0.1; 这i=0;第一次循环结束执行 i++
i=1 打印 1;i*=0.1 i=0.1; 第二次循环结束 i++ ; i=1.1 但是i 是int值 所以i=1
明白了不
作者:
袁泽宇
时间:
2011-12-22 10:05
本帖最后由 袁泽宇 于 2011-12-22 10:06 编辑
I是整形
第一次打印的是0,后面全部打印1
要是运行后马上停止就可以看到第一个是0,后面的是1
要是运行的时间略长,停止后拉到第一行看到的是1
作者:
李楠
时间:
2011-12-22 10:06
楼上把过程说的很清楚的了。你的i变量是int类型的,那么你给int类型的变量赋值一个float类型的值,那么会默认执行一个类型转换,int类型转float类型,会直接把小数点后面的值舍去,那么1.1就变成了1.
作者:
房宝彬
时间:
2011-12-22 10:09
懂了,{:soso_e104:}
作者:
闫江龙
时间:
2011-12-22 10:15
i*=0.1 结果还是取整数部分的 所以打印结果是 0111111111111…… 。但是写成i=i*0.1是不行的 右边提升为double不能在付给int 编译不会通过的
作者:
荣凯旋
时间:
2011-12-22 10:19
明白了 谢谢各位
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2