C语言数据类型所占字节是和运行的机器位数有关还是编译器有关

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言数据类型所占字节是和运行的机器位数有关还是编译器有关相关的知识,希望对你有一定的参考价值。

1)C语言一般指的是ANSI C的标准,对应的处理器分别是32位和64位的。
2)类型分为内置类型和自定义类型(非内置类型)
内置类型指的是无需声明就可使用的类型,比如char,double,int等。
自定义类型指的是使用前必须声明的,如struct StructName;结构类型,int a[5];数组类型以及enum Color;枚举类型等。未经声明的类型不可使用
3)ANSI C只对内置类型的大小进行了规范:
char |double| folat |int |long int| pointer
64bits 1 8 4 4 8 8
32bits 1 8 4 4 4 4
从上表可以看出,对于前三者,大小是统一的,只有long int 和pointer(指针)在不同的机器上占用了不同的大小。他们的规则是,long int和pointer的大小等于机器位长(8位一个字节).最后说明一点,unsigned的关键字和类型组合和该类型的大小相同,因为有符号和无符号只对编译器有效,机器对他一无所知。
参考技术A 操作系统是不管这些的,int占多少字节,double占多少字节,这些东西有一些是c语言标准规定的,有一些规定的不是特别死的,就由编译器决定。

c语言int类型占的字节数因不因机子是64位还是32位的而改变啊?

int 类型在32位机子上占两个字节,那在64位机子上还是不是占两个字节啊?

是和编译器的位数有关,而不是操作系统或者CPU的位数

例如:
在16位编译器(例如:TC)上,int型占2个字节
在32位编译器(例如:VC,GCC,CFree等)上,int型占4个字节
参考技术A 整型量所占的长度和计算机的CPU字长有关,在16位机上整型量就占16位,在32位机上整型量就占32位,在64位机上整型量就占64位,即8个字节。

这种规定跟编译器有关,就看编译器怎么设计的了。
参考技术B 64位是处理器一次能处理的字长,跟编译器中的int没有直接关系 参考技术C 4

你直接写一个sizeof(int) 答案就是4

当然了 如果你的编译器是64位的话 那么你的int就是8了

那得看啥情况了
参考技术D 四位,而且在其他系统也不一样

以上是关于C语言数据类型所占字节是和运行的机器位数有关还是编译器有关的主要内容,如果未能解决你的问题,请参考以下文章

C语言中结构体变量所占内存大小的计算

C 中数字数据类型在不同机器上所占字节数

C/C++基本数据类型所占字节数

C语言里,关于数据类型的大小问题

C语言指针与数组易混淆知识点

JAVA基本数据类型所占字节数是多少