目录
一、什么是数据类型
编程的出现是为了解决生活中的问题,给人们提供便利,那么为了能够很好的描述生活中的问题,就有了数据类型这一概念,用来定义不同的问题。比如:计算两个整数就引入了整型
二、常见的数据类型
数据类型主要分为两类:内置类型(整型、浮点型、字符型、布尔型)和自定义类型(数组、结构体(struct)、枚举(enum)、联合(union))。这里主要讲内置类型!
知识补充:
(1)数据的大小单位
字节是数据在内存中存储的最小单元。
bit Byte KB MB GB PB TB... 2^10=1024
基本数据大小的转换:
1TB=2^10 PB 1PB=2^10 GB 1GB=2^10 MB
1MB=2^10 KB 1KB=2^10Byte 1Byte=8 bit
存储大小的范围(以signed来说):
1Byet:-128(-2^7)~127(2^7-1),其他的以此类推
因为0有正0和负0两种表示方式,所以在c语言中将负0用来表示负数的最高位
(2)signed(有符号)和unsigned(无符号)
注意:字符型和整型又分为signed 和 unsigned 两类
在c语言signed最高位(bit)用来表示符号位:0正数,1负数。
unsigned是为了存储无符号数时表示的范围更大。
(3)sizeof操作符
用来计算整型数据类型的大小
用法:sizeof(表达式/数据类型)
sizeof的返回值为size_t类型(无符号整型)要用%zu来接收。因为返回的不确定时int long 等,所以用size_t来进行接收,增强程序的可移植性。
注意:sizeof中的表达式并不会使变量的值改变,如图中a%=2后,a值仍旧保持不变。
1.整型
用来定义整数,c语言中根据所存储的数据所需要的范围又分为不同的整形,不同的整型又有着不同的占位符。
- short 短整型->%hd 通常为 2 字节
- int 整型->%d 通常为 4 字节
- long 长整型->%ld 在32位系统上通常为 4 字节,64位系统上可能是 4 字节或 8 字节
- long long 长长整型->%lld 通常为 8 字节
2.字符
字符对应着ASCII码表中的值,一般用''包裹,整型和字符在一定区间内可以相互转换
这样就可以通过数字来对字符相应的操作,比如:字符之间的转换,打印连续的字符等
- char 字符型->%c 一般为1字节
字符串与\0:
字符串用来表示一连串的字符,用""来包裹数据,为了表示数据存储结束,c语言会在字符串末尾自动加上\0,是字符串结束的标志。字符串用%s来占位。
(1)字符串的初始化
以数组的形式来进行存储
(2)strlen求字符串长度
使用方式:strlen(数组名(首元素地址)),使用前要包含头文件#include <string.h>
注意:strlen的返回值时size_t,求的是\0之前的字符的个数,要与sizeof区分。
3.浮点型
专门用来表示小数,分为:
float->%f单精度浮点型 double->%lf 双精度浮点型 long double->%llf 长双精度浮点型
需要知道整数位和小数点位由大到小一次是:long double >double >float
如无特别声明,都默认为double型
4.布尔型
用来表达真假。true:非0为真,false:0为假
通常用来定义一个事物的对立面。
要使用true 或false进行表示时要加上头文件#include <stdbool.h>
在关系表达式、逻辑表达式等表达式中返回值都是布尔型
三、变量
变量是用来存储数据的,数据类型是用来说明这种变量是什么类型的,变量就相当于你给数据起的名字。
1.变量的创建
type_name name; 数据类型 变量名;
一般在创建变量时给数组初始化,否则变量表示的值可能是随机值。
初始化:type_name name=data;
2.变量的分类
变量分为局部变量和全局变量
局部变量:写在函数内部的变量
全局变量:写在函数外部的变量
全局变量可以再该文件的所有函数中使用,而局部变量只能在创建的函数中使用。如下面这个代码就会报错:
注意:全局和局部存在相同的变量时,优先使用当前函数内部的变量。
存储位置:局部变量存放在栈区;全局变量存放在静态区。
3.变量的命名规范
起名字也不能随便起,也要依据一定的原则:
- 只能由字符、数字、下划线组成
- 做到见明知意
- 不能以数字开头
- 不能以关键字作为变量
- 主要有大驼峰和小驼峰两种命名方式
大驼峰:每个词的首字母都大写。eg:MyName
小驼峰:第一个词的首字母小写其余词首字母大写.eg:myName
4.变量的取值范围
不同的数据类型存储的数据大小是不同的,如果数据超出了该类型的存储范围会使代码报错
四、部分操作符
一个表达式是由操作符和操作数组成的,对操作符的讲解会穿插在对其应用的过程中。
可以先参考:https://zh.cppreference.com/w/c/language/operator_precedence
1.算术操作符+ - * / %
需要注意的是取模%(求余数)操作符,该操作符只能对整型数据进行计算。其余的和数学一致
2.赋值操作符 = += -= *= /= %=
该操作符表示将一个值或式子的结果赋值给一个变量
例如:a=a+2;可以简化为a+=2;其余都是类似。
3.++ --操作符
这是两个单目操作符,表示对一个变量进行+1和-1操作,但又分为前置和后置两种类型
前置和后置二者的异同:
同:当某变量只是为了进行+1和-1操作时,二者一样
异:在将变量经过++操作后进行赋值时才有差异。eg:
在改代码a++时先将a的值传递给b之后在进行a=a+1操作,++a,则是先进行a=a+1操作,再将a的值赋值给b。
口诀:前置++ 先++在操作;后置++ 先操作再++
五、总结
1.本章主要讲了一些基本的数据类型,以及变量的概念,其中又穿插了与主线知识相关联的知识,如:sizeof string 以及一些常用的操作符
2.到目前为止,我们已经铺垫了c语言的一些前置知识,那么,想要写出一个完整期待的代码,还需要我们继续去开拓,接下来我们将要去了解c语言中的控制语句,去感受代码逻辑和流程严谨之美!
3.每一次的努力,不断地练习,才能够敲除令人惊叹的代码,让我们一起加油,期待我们的下一次相遇。