C/C++教程

32位和64位系统下 int、char、long、double所占的内存

本文主要是介绍32位和64位系统下 int、char、long、double所占的内存,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

32位和64位系统下 int、char、long、double所占的内存

    8字节为上限

C类型 30位机器(字节) 64位机器(字节)
char 1 1
short 2 2
int 4 4
long int 4 8
long long 8 8
char * 4 8
float 4 4
double 8 8

 


 

 

 
#include<stdio.h>
struct A
{
    int   a;
    char  b;
    double c;
    char  d;
};
 
struct B
{
    char  a;
    double b;
    char  c;
};
 
int main()
{
    printf("int =%lu,char=%lu,double=%lu\n",sizeof(int),sizeof(char),sizeof(double));
    printf("structA=%lu  structB=%lu\n",sizeof(struct A),sizeof(struct B));
    return 0;
}
//64位   最多可以8位字节对齐      (先4位,遇8位变8位对齐)
//32位   最多可以4位字节对齐
//64位编译输出:

int =4,char=1,double=8
structA=24  structB=24

//    structA: 4+(1+3)+8+(1+7) = 24
//    structB: (1+7)+8+(1+7) = 24
//未遇到8位数据类型时时4字节对齐,遇到8字节数据类型变为8字节对齐

//32位编译输出:

int =4,char=1,double=8
structA=20  structB=16

//    struct A : 4+(1+3)+8+(1+3) = 20
//    struct B : (1+3)+8+(1+3) = 16
//不管怎么样都只能是4字节对齐

 

这篇关于32位和64位系统下 int、char、long、double所占的内存的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!