C语言中的int类型的范围是由什么决定的
在 K&R 经典教材 The C Programming Language 的2.2节中,对 int 类型是这样描述的
an integer, typically reflecting the natural size of integers on the host machine
意思是反映了机器整数类型的 natural size,可是,
这个 natural size 又是什么意思呢?
书中后来在谈到 short, int, long 的关系时,又说,这些类型由编译器根据机器自由选择合适的大小,但是 short 和 int 至少 16 位,long 至少 32 位。
这里的问题是
编译器是根据什么决定类型大小呢?
后面书中又提到,这些类型啊,在<limits.h>中都有,我就在ubuntu下查看了 /usr/include/limits.h,里面确实提到
/* Minimum and maximum values a `signed int' can hold. */
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647
但是,这也是一种定义,还是没有说出为什么,我现在想知道的是
为什么
于是,我想起了那些年扫过的 《深入理解计算机系统》,英文名叫 Computer Systems: A Programmer's Perspective,速查之!
在2.1节的开头提到,字节(byte)是最小可寻址单位,大多数计算机使用8位的块。 啊,8位,那位又是什么呢?嗯,位是一种存储结构,一个位只能存储0或者1。
后面2.1.2节中提到
每台计算机都cfjcfrjn:n_VB8?_jnS>c&7"G_jVjJ3^*RcfrJǖ_Vcfrcf>(ее>_VkbB#j
C6(ееvws((%




