为什么Java中短整数除法的结果类型不是一个简单的整数?
考虑这个代码:
public class ShortDivision { public static void main(String[] args) { short i = 2; short j = 1; short k = i/j; } } 编译这会导致错误 ShortDivision.java:5: possible loss of precision found : int required: short short k = i/j; 因为表达式i / j的类型显然是int,因此必须被简化. 为什么i / j的类型不短? 解决方法
从
Java spec:
对于二进制操作,小整数类型被提升为int,操作结果为int. 编辑:为什么这样呢?简单的答案是Java将这个行为从C复制了一个更长的答案可能与所有现代机器至少进行32位本地计算的事实有关,一些机器可能实际上更难做到8位,16位操作. 参见:OR-ing bytes in C# gives int (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |