诫7加了abs()可能<0的状况。
========================================
07. 你不可以在数值运算、赋值或比较中随意混用不同型别的数值,而不谨慎考
虑数值型别转换可能带来的“意外惊喜”(错愕)。必须随时注意数值运算
的结果,其范围是否会超出变量的型别
错误例子:
unsigned int sum = 2000000000 + 2000000000; /* 超出 int 存放范围 */
unsigned int sum = (unsigned int) (2000000000 + 2000000000);
double f = 10 / 3;
正确例子:
/* 全部都用 unsigned int, 注意数字后面的 u, 大写 U 也成 */
unsigned int sum = 2000000000u + 2000000000u;
/* 或是用显式的转型 */
unsigned int sum = (unsigned int) 2000000000 + 2000000000;
double f = 10.0 / 3.0;