在计算机系统中:程序员的观点:
用 C 写 TMin 在图 2.19 和习题 2.21 中,我们仔细地将 TMin32 的值写为 -2,147,483,647-1。为什么不简单地将其写为 -2,147,483,648 或 0x80000000?查看 C 头文件 limits.h,我们看到它们使用了与我们必须编写 TMin32 和 TMax32 类似的方法:
/* Minimum and maximum values a ‘signed int’ can hold. */ #define INT_MAX 2147483647 #define INT_MIN (-INT_MAX - 1)不幸的是,二进制补码表示的不对称性和 C 语言的转换规则之间的奇怪相互作用迫使我们以这种不寻常的方式编写 TMin32。尽管理解这个问题需要我们深入研究 C 语言标准中比较模糊的角落之一,但这将有助于我们了解整数数据类型和表示的一些微妙之处。
0x80000000是十六进制表示法,并且在有符号整数的范围内,不是吗?(怎么判断一个整数整数是有符号还是无符号呢?不就是默认不带任何后缀的整数字面量就是有符号整数吗?所以0X80000000是有符号的?在有符号的范围内,因为它是最小的有符号范围内的整数)
应该 #define INT_MIN 0x80000000没问题,而书上另有说法?