ISO C标准规定A "plain" int object has the natural size suggested by the architecture of the execution environment
但是,也保证int至少与short一样大,至少为16位。
8位处理器(如6502或8080)建议的自然大小似乎是一个8位的int,但是这会使int短于16位。 那么,这些8位处理器中的一个有多大?
答案 0 :(得分:3)
6502只有指令指针作为16位寄存器,16位整数用8位处理多个语句,例如如果你用16位c = a + b
clc ; clear carry bit
lda A_lo ; lower byte of A into accumulator
adc B_lo ; add lower byte of B to accumulator, put carry to carry bit
sta C_lo ; store the result to lower byte of C
lda A_hi ; higher byte of A into accumulator
adc B_hi ; add higher byte of B using carry bit
sta C_hi ; store the result to higher byte of C
8080和Z80 CPU当时也有16位寄存器。
Z80 CPU仍然是8位架构。它的16位寄存器最终与两个8位寄存器配对,如BC,DE。使用它们的操作比使用8位寄存器要慢得多,因为CPU架构是8位,但这样就提供了16位寄存器和16个操作。
8088架构是混合的,因为它也有8位数据总线,但它有16位寄存器,AX,BX等,低位和高位字节也可单独作为8位寄存器,AL,AH等。< / p>所以有不同的解决方案使用16位整数,但8位根本不是一个有用的整数。这就是为什么C和C ++也为int使用了16位。
答案 1 :(得分:2)
5声明为signed signed类型的对象占用的存储量与&#39;&gt;&#39;&#39;&#39;&#39;&#39; char对象。一个普通的&#39;&#39;&#39; int对象具有执行环境体系结构建议的自然大小(大到足以包含标头
<limits.h>
中定义的INT_MIN到INT_MAX范围内的任何值)。
5.2.4.2.1 Sizes of integer types <limits.h> p1
它们的实现定义值的大小(绝对值)应与所示值相等或更大,且符号相同。
...
int类型对象的最小值
INT_MIN -32767 // - (2 15 - 1)
int类型对象的最大值
INT_MAX +32767 // 2 15 - 1
然后在这些平台中,int
必须至少为16位