0X2A(十进制为 42)、0XA0 (十进制为 160)、0XFFFF (十进制为 65535);
以下各数不是合法的十六进制整常数:
5A (无前缀 0X)、0X3H (含有非十六进制数码)。
4)
整型常数的后缀:在 16 位字长的机器上,基本整型的长度也为 16 位,因此表示的
数的范围也是有限定的。十进制无符号整常数的范围为 0~65535,有符号数为
-32768~+32767。八进制无符号数的表示范围为 0~0177777。十六进制无符号数
的表示范围为 0X0~0XFFFF 或 0x0~0xFFFF。如果使用的数超过了上述范围,就
必须用长整型数来表示。长整型数是用后缀“L”或“l”来表示的。
例如:
十进制长整常数:
158L (十进制为 158)、358000L (十进制为 358000);
八进制长整常数:
012L (十进制为 10)、077L (十进制为 63)、0200000L (十进制为 65536);
十六进制长整常数:
0X15L (十进制为 21)、0XA5L (十进制为 165)、0X10000L (十进制为 65536)。
长整数 158L 和基本整常数 158 在数值上并无区别。但对 158L,因为是长整型量,
C编译系统将为它分配 4 个字节存储空间。而对 158,因为是基本整型,只分配 2 个字
节的存储空间。因此在运算和输出格式上要予以注意,避免出错。
无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。
例如:
358u,0x38Au,235Lu 均为无符号数。
前缀,后缀可同时使用以表示各种类型的数。如 0XA5Lu 表示十六进制无符号长
整数 A5,其十进制为 165。
3.3.2 整型变量
1. 整型数据在内存中的存放形式
如果定义了一个整型变量 i:
int i;
i=10;
i
10
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
数值是以补码表示的:
? 正数的补码和原码相同;
? 负数的补码:将该数的绝对值的二进制形式按位取反再加 1。
例如:
求-10 的补码:
10 的原码:
谭浩强 C 语言程序设计 2001 年 5 月 1 日
取反:
0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1
再加 1,得-10 的补码:
1 1 1 1 1
1 1 1 1 1 1 1 0 1 1 0
由此可知,左面的第一位是表示符号的。
2. 整型变量的分类
1) 基本型:类型说明符为 int,在内存中占 2 个字节。
2) 短整量:类型说明符为 short