java 可能损失精度
发布网友
发布时间:2024-10-24 08:05
我来回答
共5个回答
热心网友
时间:2024-10-24 08:22
char c2 = b1 + b2;//c2是char类型,而b1,b2是byte类型。这样子是不能自动转换的。
要强制转换
char c2 = (char)(b1 + b2);
热心网友
时间:2024-10-24 08:28
char c2 = b1 + b2;
整形数据(包括byte、short、char等)参与运算后都将向int型'靠拢',该句属于int型数据对char引用的赋值,需要显式的类型转换。
char c2 = (char)(b1 + b2);
热心网友
时间:2024-10-24 08:21
public void method() {
char c1 = 65;
char c2 = b1 + b2;
System.out.print(c1);
System.out.print(c2);
}
把这段代码改成下面代码:
public void method() {
char c1 = 65;
int b3=b1+b2;
char c2 =(char)b3;
System.out.print(c1);
System.out.print(c2);
}
热心网友
时间:2024-10-24 08:26
char c2 = b1 + b2;
虽然你的b1和b2声明为byte,但在上面这行代码中,b1和b2是按int来执行的
热心网友
时间:2024-10-24 08:24
b1和b2相加会自动提升为整型int,int占四个字节,char 占两个字节,所以会发生cast的错误