C语言中int类型的长度为什么和机器的eax寄存器长度是一样的?

来源:百度知道 编辑:UC知道 时间:2024/06/25 18:18:15
这是默认的,还是有新的意图?
请高手指点!
多谢!

  1. 在C语言中,int是一种整数数据类型定义的标示符。int的位数在不同的编译器中是不同的,但不会少于16位,在16位编译器中,一个int是16位的,在32位的编译器中,一个int是32位的.这个你要看你所使用的编译器手册.

  2. EAX是一种32位通用寄存器。 EAX寄存器称为累加器,AX寄存器是算术运算的主要寄存器,所有的输入、输出只使用AL或AX人作为数据寄存器。在80386及其以上的微处理器中,EAX寄存器可以用来存储单元的偏移地址。
    EAX可称为数据寄存器,你除了直接访问外,还可分别对其高十六位和低十六位进行访问。它们的低十六位就是把它们前边儿的E去掉,即EAX的低十六位就是AX。而且它们的低十六位又可以分别进行八位访问,也就是说,AX还可以再进行分解,即AX还可分为AH(高八位)AL(低八位)。

  3. 所以说int位数只与编译器环境有关系,和EAX寄存器无关。EAX寄存器一直都是作为32位存在的,他们的长度相等只是凑巧,不是一定的。

C没有规定数据类型的长度,在不同操作系统不同编译器定义都不同.像TC中int是16位的,VC中int是32位的,而CPU的寄存器长度是固定的,eax就是32位变不了16位.因此C是平台相关的.

就是默认的,意图应该有,但是不太清楚。