C语言的数据类型

一、什么是数据类型

数据类型(Data Type)定义了存储在内存中的数据种类,并决定了数据在内存中的布局和可以进行的操作,所谓“类型”,就是相似的数据所拥有的共同特征,编译器只有知道了数据的类型,才知道怎么操作数据

二. 数据类型的分类

2.1 字符型

char                    // character
[signed] char      // 有符号的  signed可以省略
unsigned char    // ⽆符号的 

                           // 占一个字节

2.2 整型 

// 短整型   占两个字节
short[int]
[signed] short[int]
unsigned short[int]
// 整型      占四个字节
int
[signed] int
unsigned int
// 长整型   占八个字节    
long[int]
[signed] long[int]
unsigned long[int]

// 更长的整型   占八个字节

long long[int]
[signed] long long[int]
unsigned long long[int]

2.3 浮点型 

float                     // 单精度浮点型
double                 // 双精度浮点型       
long double         // 长双精度浮点数

2.4  布尔类型

C 语言原来并没有为布尔值单独设置⼀个类型,而是使用整数 0 表示非零值表示

但在 C99 中也引入了 布尔类型 ,是专门表示真假的

_Bool        // 布尔类型

 注意:

        a. 在使用布尔类型时得包含头文件 <stdbool.h>

        b. 布尔类型变量的取值是: true 或者 false

三、sizeof 操作符

sizeof 既是一个关键字,也是一个操作符,专门用来计算sizeof的操作符数的类型长度的,单位字节

sizeof 操作符的操作数可以是类型,也可是变量或者表达式

sizeof(类型)
sizeof 表达式

注意:

        a. sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的,sizeof 的计算              结果size_t 类型的,需要的占位符是 %zd

        #include <stdio.h>

        int main()
        {
            int a = 10;
            printf("%zd\n", sizeof(a));
            printf("%zd\n", sizeof a);        //a是变量的名字,可以省略掉sizeof后边的() 
            printf("%zd\n", sizeof(int));
            printf("%zd\n", sizeof(3 + 3.5));
            return 0;
        }

        b. sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小

        #include <stdio.h>
        int main()
        {
            short s = 2;
            int b = 10;
            printf("%zd\n", sizeof(s = b + 1));
            printf("s = %d\n", s);
            return 0;
        }

        // 输出:2

                      s = 2

使用 sizeof 计算数据类型的长度

#include <stdio.h>
int main()
{
    printf("%zd\n", sizeof(char));                   //   1
    printf("%zd\n", sizeof(_Bool));                 //   1 
    printf("%zd\n", sizeof(short));                  //   2   
    printf("%zd\n", sizeof(int));                      //   4          
    printf("%zd\n", sizeof(long));                   //   4          
    printf("%zd\n", sizeof(long long));           //   8       
    printf("%zd\n", sizeof(float));                   //   4          
    printf("%zd\n", sizeof(double));               //   8      
    printf("%zd\n", sizeof(long double));       //   8              
    return 0;
}

四、signed 和 unsigned 

signedunsigned 是C语言中的关键字,用来修饰字符型整型类型

signed:表示一个类型带有正负号,包含负值

unsigned:表示该类型不带有正负号,只能表示零和正整数

4.1 修饰整型 ( int ) 类型

对于 int 类型,默认是带有正负号的,也就是说 int 等同于 signed int

所以,关键字 signed 一般都省略不写,但是写了也不算错

signed int a;
// 等同于int a;

unsigned int 里面的 int可以省略

unsigned int a;
// 等同于 unsigned a;

4.2 修饰字符型 ( char ) 

signed char c;         // 范围为 -128 到 127 
unsigned char c;     // 范围为 0 到 255 

注意: 

        C语言规定 char 类型默认是否带有正负号,由当前系统决定
        也就是说, char 不等同于 signed char ,它有可能signed char ,也有可能
        unsigned char 

4.3 unsigned 的好处

unsigned 的好处是,同样长度的内存能够表示的最大整数值增大了一倍

比如:16位的 signed short int 的取值范围是:-32768~32767,最大是32767;而 unsigned short int 的取值范围是:0~65535,最大值增大到了65,535

signed char c 的取值范围是 -128 到 127,最大值为127unsigned char c 的取值范围是 0 到 255,最大值为 255
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值