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所占的内存

 

上一篇:哈希的应用(1)——位图


下一篇:hnu小学期软件实训-IP地址