int i=?
if(i+1<i){
System.out.println("TRUE");
}else{
System.out.println("FALSE");
}
i是几的时候输出TRUE
存在使i + 1 < i 的数吗() ?
答案:存在 解析:如果i为int型,那么当i为int能表示的最大整数时,i+1就溢出变成负数了。
i= 2147483647
学习了,楼上都是大神,考虑的的确很多
这时,学生初学时的练脑力的题目。只是说明
表达式也有值的。
int i = 9;
if(i+1 < i){
....}
这只是说明小于符号左边的值为10,右边的值为9。
同时,还说明每个类型的值都是有范围的。溢出了就变成了负值。
理解这两点就可以了。真要想知道这个值,太难几了,反正是32个2的相乘之积。
这时,学生初学时的练脑力的题目。只是说明
表达式也有值的。
int i = 9;
if(i+1 < i){
....}
这只是说明小于符号左边的值为10,右边的值为9。
同时,还说明每个类型的值都是有范围的。溢出了就变成了负值。
理解这两点就可以了。真要想知道这个值,太难几了,反正是32个2的相乘之积。
i为最大的时候,再加一就溢出了,会变成最小的数。
范围越界是会从最小开始的,记住了。
因为int 所占的字节数为4个字节,即32位.对于正数,它的最高位是0,所以它最大能表示的数是01111....(后面共31个1),而这个数化成十进制即是2147483647。
0xFFFFFFFF或者Integer.MAX_VALUE
干嘛想那么复杂 if(i+1<1) 改成 if(i++<i) 不就可以了么
i达到int类型的最大值32767时他+1就变为啦-32768了