C语言、数据类型、变量

1、数据类型介绍

        为什么我们C语言这么多的数据类型?因为我们生活中很多数据,比如我们的年龄、身高、体重、Π(3.14.....),绩点,薪资。

        C语言呢为了让计算机识别我们这些生活的数据,就把它们划分了多种类型,例如,使用整形int描述整数,浮点型float描述小数,字符型char描述字符(文字,a,b,c之类)。

下面简单介绍一下C语言中的各种数据类型:

数据类型:

内置类型:                             自定义类型:

字符型                                     数组

整形                                        结构体-struct

浮点型                                     枚举enum

布尔类型                                  联合体union

1.1字符型

1.2整型

1.3浮点型

1.4布尔类型

        _Bool

        C语言原来没有为布尔值设置一个数据类型,只是用整数0来表示假,非零(不是零)表示真。

        后来在C99标准中引入了布尔类型,是专门用来表示真假的。

        注意要用到布尔类型就需要用到头文件

        

        布尔类型的变量取值为ture 或 false

        

1.5数据类型的长度

        每一种数据类型都有自己的长度,使用不同的类型创建不同长度的变量,不同长度的变量的数据范围也有所差异。

1.5.1sizeof操作符

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

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

        计算机的计数单位有Bit、Byte、KB、MB、GB、TB、PB。

        我们计算机是有二进制的,那我们存放二进制的0或1,就需要一块空间,一个比特;一个比特位就是存放一个二进制位。那么连续8个比特位,就称之为字节(Byte)。

        1Byte=8个bit,1KB=1024Byte、1MB=1024KB、1GB=1024MB、1TB=1024GB、1PB=1024TB

        2的10次方

        

        sizeof的操作数如果不是数据类型,是表达式,其实后面的括号是可以省略的

        sizeof的表达式是不参与实际计算的,只是根据表达式的类型来得出大小。

        sizeof的计算结果是size_t类型的。

          注意:sizeof操作符的返回值,C语言之规定是无符号整型,并没有说它是具体哪一种类型,而是由系统去决定有可能是unsigned int、unsigned short int、也可能是unsigened long、甚至是unsigned long long。那么它对应的占位符也就不同。不利于程序的操作。

        于是C语言给制定了一个类型size_t,统一了sizeof的返回值类型,对应当前系统的sizeof的返回值类型,可能是unsigened int,也可能是unsigened long long,不管你是什么类型,我都把你当成size_t类型,用%zd打印。

1.5.2数据类型的长度

        

        不同的编译器,结果可能会不一样

1.5.3sizeof中表达式不计算

        sizeof在编译期间,已经把sizeof里的表达式已经确定了,但是表达式实在程序运行阶段才执行,

而sizeof在编译期间已经被处理掉了,所以表达式在程序执行期间就不会执行。

2.signed、unsigned

        我们在数据类型,那里有写到signed和unsigned,这两个到底是什么意思呢?其实不难

在C语言中使用signed和unsigned关键字来修饰字符型和整型

        signed关键字,表示一个数据类型带有正负号,有负值。

        unsigned关键字,表示一个数据类型没有正负号,只能表示0和正整数。

        对int类型来说,它是默认带正负号的,那它就等同于signed int,所以int,可以写也可以不写signed,写了也不算错。

        但你如果说我就要不带有负值的int类型,那么就要加上unsigned:unsigned int。

整数变量声明为unsigned的好处就是,同样长度的内存能够表达的最大整数值,增大了一倍。

        比如,16位的signed short int的取值范围是:-32768~32767,最大是32767;而unsigned short int的取值范围是0~65535,最大值增大到了65535,本来int里就给了负数一块空间,unsigned里没有负数,它是从0开始算的,就把那块空间也用了。

        unsigned int里面的int可以省略;unsigned a;

        字符类型也可以设置signed和unsigned

        signed char a;

        unsigned char a;

        注意,char类型跟int类型不一样,在C语言中int是默认是signed,但是char不一定,它是由系统决定的,char不等于signed char,它有可能是signed char,也又可能是unsigned char。

3、数据的取值范围

        前面介绍了这么多类型,为什么单单就int类型就有short、int、long、long long四种呢?

        其实每一种类型的取值范围都是不同的,存储数据的数值的最大值与最小值的区间不同,有了不用的数据类型,就可以在合适的场景下使用它,如果要查看个数据类型的取值范围,可以在以下头文件可以找到;

        limits.h:这个头文件说明了整型类型的取值范围。

        float.h:这个头文件说明了浮点型类型的取值范围。

        要用的时候想看看数值范围多大,就在电脑搜索以上文件,打开查看就行,不必死记。

4、变量

4.1变量的创建

        我们了解这么多数据类型,最终的目的就是创建合适的变量。

        变量就是会发生变化的量,常量就是不变的量。

        创建变量的形式:数据类型  变量名;

        那我们在川建的时候给变量一个值,就叫初始化。

4.2、变量的分类

        全局变量:大括号外部定义的变量就是全局变量

        全局变量的使用范围广,整个工程都可以使用。

        局部变量:大括号内部定义的变量就是局部变量

        局部变量的使用范围有限,只能在自己里的大括号范围内使用。

        全局变量b在局部变量里也能使用,而局部变量这能在括号范围内使用,在括号范围外打印是会出错的。

        如果全局变量和局部变量的变量名是相同的,那么局部优先。

        那么全局变量和局部变量在内存中存储在哪里?

        局部变量是放在内存的栈区;

        全局变量是放在内存的静态区;

感谢大家的观看,放完假重新回到学习的路途上。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值