C和C++安全编码笔记:整数安全
5.1 整数安全导论:整数由包括0的自然数(0, 1, 2, 3, …)和非零自然数的负数(-1, -2, -3, …)构成。 5.2 整数数据类型:整数类型提供了整数数学集合的一个有限子集的模型。一个具有整数类型的对象的值是附着在这个对象上的数学值。一个具有整数类型的对象的值的表示方式(representation)是在为该对象分配的存储空间中该值的特定位模式编码。 在C中每个整数类型的对象需要一个固定的存储字节数。<limits.h>头文件中的常量表达式CHAR_BIT,给出了一个字节中的位数,它必须至少为8,但可能会更大,这取决于具体的实现。除unsigned char型外,不是所有的位都必须用来表示值,未使用的位被称为填充(padding)。 标准的整数类型由一组有符号的整数类型和相应的无符号整数类型组成。 无符号整数类型:C要求无符号整数类型值使用无偏移的纯二进制系统表示。无符号整数是计数器的自然选择。标准的无符号整数类型(按照它们的长度非递减排序)是:unsigned char、unsigned short int、unsigned int、unsigned long int、unsigned long long int,关键字int可以省略,除非它是唯一存在的整数类型的关键字。 特定于编译器和平台的整数极值记录在<limits.h> 头文件中