1整型数
检查整型相除。当你使用的是整型数时,7/10并不等于0.7,它等于0,这也同样适于中间
结果。在客观世界中10*(7/10)=7,而在整型算法中10*(7/10)却等于0,因为(7/10)等于0,解
决这个问题最简单的办法是调整计算顺序,如上例的表达式可以改写为:(107)/10,使得除
法运算在最后进行。
检查整型是否溢出。在进行整型加法或乘法运算时,应明确可能的最大整型数。通常不带
符号的最大整型数是65535,或说是2的16次方减1。当两个整型数相加的结果超过可以的最大整
型数时就会出现问题。比如,250300,正确的答案是75000。但由于整型溢出,你得到的答案很
可能是9464,(75000-65536=9464)。下面是一些常见类型的整型数的范围:
整型数类型 范围
有符号8位 -128到127
无符号8位 0到255
有符号16位 -32768到32767
无符号16位 0到65535
有符号32位 -2,147,483,648到2,147,483,647
无符号32位 0到4,294,967,295
防止整型溢出的最简单办法是先笔算一下表达式中每一项的值是否溢出。例如,在整型表
达式 M=J*K 中,J 的最大可能值是 200,而 K 的最大值是 25,从而 M 的最大值为 5000,小于
65535,因而这一运算是可行的,但若 K 的最大值为 2000 的话,那么