在Java中取余操作定义产生的后果都满足下面的恒等式:
int数值a, 与非零int数值b 都满足下面的等式:
(a / b) * b + (a % b) == a
从上面就可以看出, 当取余操作返回一个非零的结果时...很容易看出这个表达式计算的范围早已超出int的取值范围, 纵然使用long去存储计算结果, 但是在计算的过程中就已经出现计算数据溢出, 这是一个隐藏错误....首先看这样一个问题, 表达式x^=y, 在C/C++的编译器中是先计算出y的值, 然后再获取x的值, 最后再计算表达式. 但在Java中的做法是先获得x的值, 再获得y的值, 最后再计算....思考:
上面的问题说明了, 在条件表达式中, 最后再后两个操作数使用相同类型的操作数, 以此避免返回值类型不确定的问题, 并且在其他的表达式计算中, 一定要理清楚数值之间的类型转换.
8.发现隐藏的类型转换...在 'H'+'a' 表达式的运算中, 是将 'H', 'a', 上升为int, 进行数值运算.