从Java规范:
5.6.2二进制数值提升
当运算符将二进制数值提升应用于一对 *** 作数时,每个 *** 作数必须表示一个数值类型的值,以下规则按顺序适用,并根据需要使用加宽转换(第5.1.2节)来转换 *** 作数:
如果一个 *** 作数的类型为double,则另一个将转换为double。
否则,如果其中一个 *** 作数的类型为float,则另一个将转换为float。
否则,如果其中一个 *** 作数的类型为long,则另一个将转换为long。
否则,两个 *** 作数都将转换为int类型。
对于二进制运算,会将小整数类型提升为
int,运算结果为
int。
编辑:
为什么会这样?简短的答案是Java从C复制了此行为。更长的答案可能与以下事实有关:所有现代机器都至少执行32位本机计算,而实际上对于某些机器而言,执行8位运算和16位运算。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)