C语言——数据类型和字节计算

前言提示:

采用的编译器是Dev C++

sizeof是一种用于计算数据类型占用的字节数的函数;printf是格式化输出函数.


计算各种数据类型的占用字节,运行代码如下:

#include<stdio.h>
int main()
{//所有的变量都需要先用一个数据类型定义,才能使用
   int a;
   double b;
   float c;
   long d;
   long long e;
   short f;
   char g;
   struct Day{
       char T;
       int o;
       char t;
   
   }Daily;//定义结构体
   union tal{
       struct Day;
   short A;
   }Dat;//定义共用体
   int *p;
    short *o;
   char *l;
   printf("short *= %d\n",sizeof(short *));
   printf("int *= %d\n",sizeof(int *));
   printf("char *=%d\n",sizeof(char *));
   printf("short = %d\n",sizeof(short));
   printf("int    = %d\n",sizeof(int));
   printf("long  = %d\n",sizeof(long));
   printf("long long = %d\n",sizeof(long long));
   printf("double = %d\n",sizeof(double));
   printf("char = %d\n",sizeof(char));
   printf("struct Day = %d\n",sizeof(struct Day));
   printf("float = %d\n",sizeof(float));
   printf("union tal=%d\n",sizeof(union tal));
   printf("long double = %d\n",sizeof(long double));
   return 0;
}

 运行结果如下:

归纳基本数据类型

基本数据类型

占用的字节数

字符型 char

1

整型 int 

4

短整型 short

2

单精度浮点型 float

4

双精度浮点型 double

8

长整型  long (long int)

4

结构数据类型

字节数

指针类型

8

结构体

由成员字节数和成员顺序有关

共用体

取决于成员变量中最大的字节数



结构数据类型

结构数据类型

字节数

指针类型

8

结构体

由成员字节数和成员顺序有关

共用体

取决于成员变量中最大的字节数

结构体变量的数据类型字节数是由结构体的成员放置顺序和结构体成员的字节共同决定的。

第一种结构体

struct Day{
        int o;
        char t;
        int r;
    }Daily;

 运行结果

第二种结构体

struct Day{
        char T;
        int o;
        char t;
    
    }Daily;

运行结果如下: 

 

第三种结构体

struct Day{
        int o;
        char t;
        char r;
    }Daily;

运行结果如下: 

 

总结:

结构体的字节数与结构体的结构变量成员的字节数和成员的排放顺序有关。

结构变量的存储就可以理解为一种顺序存储

最大字节数的变量作为标准,按照顺序存储

遵循地址对齐的原则

共用体的字节数取决于最大的基本数据类型的成员变量字节数;

union tal{
        struct Day;
    short A;
    int r;
    }Dat;

 运行结果如下:

union tal{
        struct Day;
    short A;
    int r;
    double  G;
    }Dat;

 运行结果如下:

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值