2.1.1 :
C++标准规定的各种算术类型的尺寸的最小值, 同时允许编译器赋予这些类型更大的尺寸. 比如char的最小尺寸为8位
执行浮点数运算选用double ,这是因为float 通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无儿。事实上, 对于某些机器来说,双精度运算甚至比单精度还快
2.1.2 :
当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。例如, 8 比特大小的 unsigned char 可以表示0 至
255 区间内的值,如果我们赋了一个区间以外的值,则实际的结果是该值对256
取模后所得的余数。因此,把 -1 赋给8 比特大小的 unsigned char 所得的结果
是255当我们赋给带符号类型一个超出它表示范围的值时,结果是未定义的( undefined )。
此时, 程序,可能继续工作、可能崩溃,也可能生成垃圾数据。如果表达式里既有带符号类型又有无符号类型, 当带符号类型取值为负时会出现异
常结果, 这是因为带符号数会自动地转换成无符号数。例如,在一个形如a*b
的式子
中,如果a = -1 , b = 1 ,而且a 和b 都是int ,则表达式的值显然为- 1. 然而,如
果a 是int , 而b 是unsigned , 则结果须视在当前机器上int 所占位数而定。在32环境里,因为2的32次方是4294967296, 所以a*b
结果是4294967295
. . .