字长和数据类型

Posted Li-Yongjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字长和数据类型相关的知识,希望对你有一定的参考价值。

字长

机器一次能完成处理的数据被称为字。字是指位数,人们说某个机器是多少“位”时,其实说的就是该机的字长。比如说,当人们说奔腾是 32 位芯片时,他们的意思是奔腾的字长为 32 位,也就是 4 字节。
处理器通用寄存器的大小和它的字长是相同的。
C 语言定义的 long 类型总等于机器的字长。

数据类型

C 语言规定了变量的最小长度,但没有规定变量具体的标准长度。
不过有以下准则:

  • ANSI C 标准规定,一个 char 的长度一定是 8 位。
  • 尽管没有规定 int 类型的长度是 32 位,但在 linux 当前所有支持的体系结构中,它都是 32 位的
  • short 类型也类似,在当前所有支持的体系结构中,虽然没有明文规定,但它都是 16 位的
  • long 类型被确定为机器的字长,为 32 位或 64 位。

char 类型的符号问题

C 标准表示 char 类型可以带符号也可以不带符号,由具体的编译器、处理器或由它们两者共同决定到底 char 是带符号合适还是不带符号合适。
大部分体系结构上,char 默认是带符号的,它可以自 -128 到 127 之间取值。但也有一些例外,比如 ARM 体系结构上,char 就是不带符号的,它的取值范围是 0~255。
不会出错的写法:

signed char i = -1;
unsigned char i = 255;

以上是关于字长和数据类型的主要内容,如果未能解决你的问题,请参考以下文章

ANSI C 标准组合的类型字长和范围

辨析:机器字长存储字长指令字长和操作系统位数

C语言数据类型中int与short的区别

编写跨平台位级代码时,字长和字节序会相互作用吗?

系统配置与性能评价

RAM的字长、字宽、字数、位宽等表述