【C语言】各种数据类型占用内存

C标准并没有具体规定哪个基本类型应该占多少字节,具体与机器、OS、编译器有关。

1、直接说结论

在这里插入图片描述
规律:
1、在win32和win64环境下数据类型所占字节数是一样的,不同的只有指针类型。
2、win系统下long都占4个字节,仅在Linux64下long占8个字节

2、验证

(1)win10操作系统,VS2019

在该环境下通过变换×86和×64切换32位与64位。
验证代码如下:

#include<stdio.h>
int main()
{
	int a = 9;
	int* p = &a;
	printf("sizeof(char)=%d\n", sizeof(char));
	printf("sizeof(short)=%d\n", sizeof(short));
	printf("sizeof(int)=%d\n", sizeof(int));
	printf("sizeof(long)=%d\n", sizeof(long));
	printf("sizeof(long long )=%d\n", sizeof(long long));
	printf("sizeof(float)=%d\n", sizeof(float));
	printf("sizeof(double)=%d\n", sizeof(double));
	printf("sizeof(p)=%d\n", sizeof(p));
	return 0;
}

打印结果如下:

win64位结果:					win32位结果:
sizeof(char)=1					sizeof(char)=1
sizeof(short)=2					sizeof(short)=2
sizeof(int)=4					sizeof(int)=4
sizeof(long)=4					sizeof(long)=4
sizeof(long long )=8			sizeof(long long )=8
sizeof(float)=4					sizeof(float)=4
sizeof(double)=8				sizeof(double)=8
sizeof(p)=8						sizeof(p)=4//仅指针项不同

(2)Ubuntu 18.04 ,64位,gcc编译工具
同样的代码,执行结果为:

linux64位结果:
sizeof(char)=1
sizeof(short)=2
sizeof(int)=4
sizeof(long)=8//仅这项不同,其余与win64一样
sizeof(long long )=8
sizeof(float)=4
sizeof(double)=8
sizeof(p)=8

到此为止,“win系统下long都占4个字节,仅在Linux64下long占8个字节”这句话得到了验证。

今后将继续在不同环境下实验,补充该文。

参考资料

1、https://blog.csdn.net/wankcn/article/details/121209323?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166390075816781432984216%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=166390075816781432984216&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-121209323-null-null.142^v50^pc_rank_34_1,201^v3^control_2&utm_term=long占用字节&spm=1018.2226.3001.4187

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值