作者:老猫 | 来源:互联网 | 2022-11-25 04:31
你需要提供演员才能做到这一点:
ch = (char) (ch + 1);
这是因为表达式ch + 1
被提升(upcast)为int
.为了将此表达式重新分配给a,char
您需要明确地向下转换它.
1> Nicholas K..:
你需要提供演员才能做到这一点:
ch = (char) (ch + 1);
这是因为表达式ch + 1
被提升(upcast)为int
.为了将此表达式重新分配给a,char
您需要明确地向下转换它.
2> 孙兴斌..:
通过ch+1
,char ch
将被提升到int
第一,就像((int)ch) + 1
,所以结果将是一个int
.
当您尝试将int
(32位)分配回char
(16位)时,可能会丢失准确性,您需要明确地执行此操作ch = (char)(ch + 1);
这称为二进制数字促销:
对某些运算符的操作数执行二进制数字提升:
...
数值类型的加法和减法运算符+和 - (§15.18.2)
它会表演
应用扩展基元转换(第5.1.2节)来转换由以下规则指定的一个或两个操作数:
如果任一操作数的类型为double,则另一个操作数转换为double.
否则,如果任一操作数的类型为float,则另一个操作数转换为float.
否则,如果任一操作数的类型为long,则另一个操作数转换为long.
否则,两个操作数都将转换为int类型.