C语言--C语言数据类型和变量

一、数据类型的介绍

1. 数据类型

C语言的数据类型
在C语言中使用了多种数据类型用于表达我们生活中的各种数据,其中数据类型可以分为内置类型自定义类型,本节中我们主要探讨内置的数据类型。
其中所谓的“类型”就是相似数据所拥有的共同特征,对于编译器来说知道了数据的数据类型才知道如何操作数据。
我们使用“整型”来描述整数,用“字符型”来描述字符,用“浮点型”来描述小数。

2. unsigned和signed的字符型和整型

其中对于字符型和整型可以使用关键字unsignedsigned修饰。
signed:表示一个类型不带有正负号,指标是0和正数。
unsigned:表示一个类型带有正负号,可以表示负数。

那么为什么要使用这两个关键字来修饰数据类型呢?
因为两种关键字会向内存申请不同的空间存放数据。比如unsigned short int 的取值范围是 -32768 ~ 32767 ;而且signed short int 的取值范围是 0 ~ 65535。从中我们可以看出,对于不同的数据,合理的使用这两种关键字可以帮助我们更合理的向内存申请空间。

注意:
其中的char类型,在C语言中规定默认是否带有正负号,由当前系统(编译器)决定。 也就是说char不等同于signed char 他有可能是signed char 也有可能是unsigned char。

3. 布尔类型的介绍

布尔类型也是C语言内置的数据类型的一种,由于表示真假(0表示假,1表示真)。
注意: 布尔类型的使用需要添加头文件<stdbool.h>。
布尔类型变量的取值是:ture 或者 false。

4. 数据类型的大小

在上面讲解unsigned 和 signed 这两个关键字时,有涉及到数据类型大小的问题,在这里我们将进行详细的解释。
每一种数据类型都有自己的长度,使用不同的数据类型,能创建出长度不同的变量,变量的长度不同,存储的数据范围就有差异。

在C语言中我们使用 sizeof ,这一个关键字/操作符,来就计算sizeof的操作符数的类型长度,单位是字节。sizeof 操作符的操作数可以使类型也可以是变量或者表达式。
注意: a. sizeof的操作数如果不是类型,是表达式的时候,可以省略后面的括号。

sizeof int ;  (×)
sizeof (int)     ()

b. sizeof后面的表达式不真实参与运算,根据表达式的类型算出大小。

short s = 2;
int b = 5;
sizeof (s = b + 1)  // 运行结果为2 ,答案取决于S的类型

c. sizeof的计算结果是size_t类型的。
sizeof运算符的返回值,C语言只规定是无符号整数,并没有规定具体类型,而是留给系统自决定,所以 sizeof 到底返回什么类型,不同的系统中,返回的类型有可能不一样。所以在打印时选择的占位符也有可能不一样,这样不利于程序的可移植性。所以C语言提供了一种解决方法,创造了一个类型别名 size_t ,用来统一表示sizeof的返回值类型。而占位符 %zd 是用于表示 size_t类型的值。
各种数据类型的长度

二、变量

1. 变量的概念和形式

我们上面对于数据类型进行了详细的解释,那么我们学习数据类型的目的是什么呢? 类型是用来创建变量的。
什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量
变量创建的语法:

data_type    name;
    |          |
    |          |
 数据类型     变量名

2. 变量的分类

全局变量:在大括号外部定义的变量就是全局变量
全局变量的使用范围更广,整个工程中想使用,都是有办法使用的。
局部变量:在大括号内部定义的变量就是局部变量
局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的。
注意:当全局变量和局部变量同名时,局部变量优先使用

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

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是用来动态内存管理的 (后期会介绍)

3.操作符 (运算符)

A 、运算操作符
在学习了数据类型和变量的相关知识后,我们可以尝试写一些关于计算的代码。C语言为了方便运算 提供了一系列操作符,其中有一组操作符叫运算操作符
(1)、+ 和 -
这两个操作符用来完成加法和减法运算 ,他们都有两个操作数,这种操作符数也叫双目操作数
(2)、 *
这个操作符 用来完成乘法运算。
(3)、/
这个操作符用来完成除法运算。
注意:除号两端如果都是整数,执行帧数除法,得到的也是整数。
如果需要得到浮点数的结果,两个运算数必须有一个浮点数,这是C语言就是执行浮点数除法。

(4)、 %
这个操作符用来完成取余运算
注意:这个操作符只能用于整数,不能用于浮点数。
负数取余的规则是,结果的正负号由第一个运算数的符号决定

B、赋值操作符
用法:在变量创建的时候给一个初始值初始化,这叫做赋值。
复合赋值符
我们经常会对一个数进行自加、自减操作,如下:

int a = 10;
a = a + 3;
a = a - 2;

C语言提供了更加简便的写法

int a = 10;
a += 3;
a -= 2;

其中+= 、-=就是复合赋值符。
复合赋值符还有如下:
+= -= %= *= /=
// 下面的操作符后期讲解
<<= >>= |= ^= &=

C、单目操作符
(1)、++和–
前置:先+/- 1 ,再使用
后置:先使用,再+/- 1

(2)、+和-
+和-也可以是单目操作符,他们是单目操作符时表示的是正负号。

D、 强制类型转换

int a = 3.14;
//a是int类型的,3.14是double类型的,两边类型不一致,编译器会报警告
//为了消除这个警告,可以使用强制类型转换
int a = (int)3.14;
//意思是将3.14强制转化为int类型,这种强制类型转化只取整数部分

今天对数据类型和变量相关的部分的介绍就到这里,大家可以把对这篇文章的看法和建议发在评论区,感谢阅读!!

后面一篇会为大家介绍printf和scanf的全面介绍·······

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值