在c语言中,int,char,short三种类型数据在内存中所占的字节数由什么决定

2024-12-02 16:46:58
推荐回答(5个)
回答1:

通常char占1个字节,short占2个字节。原因是,1个字节可以表示一个ASCII码,为了提高计算机的数据处理能力,short用一个字节远远不足,但限于早年的存储器体积和价格,用2个字节也是不得以的事情。现在,存储器的体积不再是考虑的因素,价格也不是“事”,CPU的数据寄存器已经是64位(8个字节),32位的CPU已近末日黄昏,所以short用8个字节表示不再是梦。所谓64位的CPU,指的就是其数据寄存器(包括指令寄存器)的宽度是64bits,一次读取、存储64bits最为快捷,这就是int类型数据的标准宽度。

回答2:

总结一下哈:针对大部分32位机器来说所占内存是: char 字符型 1个;int整型2 个;short 2 个;但是,不同的机器,和不同的编译软件下,都会不同。所以你可以用sizeof()函数测试一下。例sizeof(char);
这里补充下我的答案,之前回答这个问题时候,自己还是一名单片机开发爱好者,C51单片机中的int确实是16位,两个字节。

而现在的我从事应用软件开发,在这些编译器中(比如vs、gcc),int一般都是4位的(无论32位还是64位)。事实上,一个比较官方的解释是:编译器可以根据自身硬件来选择合适的大小,但是需要满足约束:short和int型至少为16位,long型至少为32位,并且short型长度不能超过int型,而int型不能超过long型。这即是说各个类型的变量长度是由编译器来决定的。

回答3:

字符型 char 1 字节
整型 int 2 字节
short 2 字节
长整型 long 4 字节
单精度 float 4 字节
双精度 double 8 字节

回答4:

一般来说
int 4字节
char 1字节
short 2字节
由编译器决定的,编译器会根据系统平台自己改变数据类型的取值范围。

回答5:

16位编译器
char :1个字节
char*(即指针变量): 2个字节
short int : 2个字节
int: 2个字节
unsigned int : 2个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

32位编译器
char :1个字节
char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器)
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 4个字节
long long: 8个字节
unsigned long: 4个字节

64位编译器
char :1个字节
char*(即指针变量): 8个字节
short int : 2个字节
int: 4个字节
unsigned int : 4个字节
float: 4个字节
double: 8个字节
long: 8个字节
long long: 8个字节
unsigned long: 8个字节