java中两个不同类型的整型变量进行计算,得出的结果是什么类型?
如题;publicclasstest{publicstaticvoidmain(String[]args){longa,b,c;a=(long)Math.pow(2,31...
如题;
public class test {
public static void main(String[] args) {
long a,b,c;
a = (long) Math.pow(2,31);
b = 1;
c= a+b;
System.out.println(a+"\n"+c);
}
}
不是所有整型变量进行计算前都会自动转换成 int 型吗?a 转换成 int 型超出了- 2^31 ~ 2^31 - 1 的范围,为什么编译不会出错? 展开
public class test {
public static void main(String[] args) {
long a,b,c;
a = (long) Math.pow(2,31);
b = 1;
c= a+b;
System.out.println(a+"\n"+c);
}
}
不是所有整型变量进行计算前都会自动转换成 int 型吗?a 转换成 int 型超出了- 2^31 ~ 2^31 - 1 的范围,为什么编译不会出错? 展开
2个回答
展开全部
你这是long类型的啊...long类型比int范围大啊
数据类型 大小 范围 默认值
byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 -2147483648-2147483648 0
long(长整型) 64 -9233372036854477808-9233372036854477808 0
float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
boolean(布尔型) 1 true/false false
数据类型 大小 范围 默认值
byte(字节) 8 -128 - 127 0
shot(短整型) 16 -32768 - 32768 0
int(整型) 32 -2147483648-2147483648 0
long(长整型) 64 -9233372036854477808-9233372036854477808 0
float(浮点型) 32 -3.40292347E+38-3.40292347E+38 0.0f
double(双精度) 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char(字符型) 16 ‘ \u0000 - u\ffff ’ ‘\u0000 ’
boolean(布尔型) 1 true/false false
追问
a定义时是long型,但是计算时不是转换成int型吗?这样不就超出范围了吗?还有就是计算结果c是什么类型?是long还是int?求解
追答
C 是long类型的,int double long 计算到最后的结果都是long型
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询