int为何不越界?
public class MyTest4{
public static void main(String[] args){
int i=0x7fffffff;
int p=i*100;
long j=i*100;
System.out.println("i="+i); //2147483647
System.out.println("p="+p); //-100
System.out.println("j="+j); //-100
}
}
此题为何不出错?
int为何不越界?
问题点数:20、回复次数:5Top
1 楼junhong202(junhong)回复于 2004-09-02 15:02:11 得分 0
int 已经越界了拉!j应该改为下面才行
public class MyTest4{
public static void main(String[] args){
int i=0x7fffffff;
int p=i*100;
long j=(long)i*100;
System.out.println("i="+i); //2147483647
System.out.println("p="+p); //-100
System.out.println("j="+j); //-100
}
}
Top
2 楼wk0210(wk0210)回复于 2004-09-02 15:20:40 得分 0
我的意思是这一行:int p=i*100;
编译器为何不报错?
int*int在将值赋给int,有越界的嫌疑啊?Top
3 楼walkie(罗来)回复于 2004-09-02 15:41:58 得分 10
java里面越界不报错的,但是运算结果完全就不对了。
所以编程者得自己注意这个问题Top
4 楼wk0210(wk0210)回复于 2004-09-02 15:46:42 得分 0
这种规则适用于:char,byte,short,int,long?Top
5 楼draco2002(Draco—五月的风~!)回复于 2004-09-02 16:42:40 得分 10
另外,char,byte,short类型的变量进行运算时会结果自动提升到int类型,这点也需要注意!Top




