【C语言】各种数据类型占用内存 您所在的位置:网站首页 C语言存储类型的含义 【C语言】各种数据类型占用内存

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

2023-06-14 15:46| 来源: 网络整理| 查看: 265

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

1、直接说结论

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

2、验证 (1)win10操作系统,VS2019

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

#include 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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有