sizeof运算字节

使用sizeof运算符,检查当前系统中,类型int,short,float,double各占几个字节,数据1,1.0各占几个字节

//64bit 操作系统 sizeof 计算
int main(int argc, char const *argv[]) {

printf("char %ld\n", sizeof(char) ); //1
printf("int %ld\n", sizeof(int) ); //4
printf("unsigned int %ld\n", sizeof(unsigned int) ); //4
printf("float %ld\n", sizeof(float) ); //4
printf("double %ld\n", sizeof(double) ); //8

char *pc ="abc";
printf("pc %ld\n", sizeof(pc) ); //8 表示指针地址 64位系统
printf("*pc %ld\n", sizeof(*pc) );//指针指向a char 所以答案是1

int *pi;
printf("pi %ld\n", sizeof(pi) ); //8
printf("*pi %ld\n", sizeof(*pi) ); //4 int类型

char **ppc = &pc;
printf("ppc %ld\n", sizeof(ppc) ); //8
printf("*ppc %ld\n", sizeof(*ppc) ); //8
printf("**ppc %ld\n", sizeof(**ppc) ); //1

void (*pf)();//函数指针
printf("pf %ld\n", sizeof(pf) ); //8
printf("*pf %ld\n", sizeof(*pf) ); //1

//sizeof 数组
char a1[] = "abc";
int a2[3];
printf("a1 %ld\n", sizeof(a1) ); //4 如果是字符 表示字符串 引用地址, 表示首地址 指针指向首地址
printf("a2 %ld\n", sizeof(a2) ); //12 是int 表示 数组占用的内存的大小

struct MyStruct
{
double dda1; //8
char dda;//1
int type;//4
};

struct MyStruct mystruct;
printf("mystruct %ld\n", sizeof(mystruct) );//因为字节对齐 所以16 而不是13
typedef struct
{
int cmd; //4
int stat; //4
char data[]; // 伸缩数组 ,没有开辟内存
} test;
}

32位系统,vc编译器中,

short占 2 字节,

int 、float、long 都占 4 字节,

只有double 占8 字节

#include <stdio.h> 
int main()
{
/*sizeof 操作符以字节形式给出了其操作数的存储大小。*/
printf("int的字节大小",sizeof(int));
printf("float的字节大小%d",sizeof(float));
printf("double的字节大小%d",sizeof(double));
printf("char的字节大小%d",sizeof(char));
return 0;
}