一、上期回顾
上期问题用< >和“ ”来调用头文件有什么具体区别吗,不知大家思考得如何了呢?
其实,C语言会提供一些公共库(就是上期说的系统.h文件),这公共库存放在电脑的某个系统文件目录下,我们使用< >来包含系统头文件时,系统会自动去这些系统文件目录下找你所包含的文件;我们使用“ ”来包含自己写的头文件时,系统会在你创建的工程目录下查找,也就是当前目录下查找你自己写的头文件,如果找不到,再去系统目录下查找。
知道了这个问题的答案,今后面试官问起这个问题,就可以信心满满地回答了哦!让你在面试官的心目中加分!
二、基本数据类型
开始今天的话题吧!
咱们的食物有很多类型,比如清蒸的、油炸的、烧烤的(流口水了),这些食物主要的营养成分和作用也是不同的。同理,在C语言中,数据也有很多类型,他们在程序中充当的角色和作用也是不同的哦。
#include int main(){ int a = 10, b; char c = 'x', d; a = 66; b = 20; d = 's'; return 0;}
大家可以看到,我们在昨天写好的空的main函数中,加上了几句话。
2.1 int类型
int a = 10, b;
这句代码表示,我创建了一个“int”类型的变量a同时给它初始赋值为10,又创建了一个变量b,没有给他初始赋值。为什么叫它们是“变量”呢,应为我们可以改变他们的值。
“int”全称是“integer”,意思为“整数”,在内存中占4字节。它们的作用主要是用来做数学计算的,比如加减乘除、位移等。很好理解,int变量是不能有小数点的,它只能是-5,0,10这样的整数哦。大家会好奇,那变量b我们没有给它赋值,那它的值应该是什么呢?答案是,没有赋值的变量的值是随机的,会是一个很奇怪的值。
2.2 char类型
char c = 'x', d;
这句代码表示,我创建了一个“char”类型的变量c同时给它初始赋值为'x',又创建了一个变量为d,没有给他初始赋值。
“char”的全称是“character”,意思为“字符”,在内存中占1字节。他们的作用主要是起名字,比如一个外国人叫“Mary”,她的名字就是由'M'、'a'、'r'、'y'这四个字符组成的。大家记住字符类型的变量赋值要加上' ',就是边上两个单引号,而整数类型变量就不用这样了。
a = 66; b = 20; d = 's';
我们可以在定义变量的时候赋值,也可以选择在定义之后赋值,比如我们虽然没有在定义变量b和d的时候赋初值,但是我们可以在接下来的代码里按需要给变量赋值(修改)。比如上面的代码我们给b赋值20,给d赋值's',修改了变量a的值为66。
2.3 ASCII码表
我们知道了char类型的变量。就必须要来认识一下ASCII码表:
我们发现每个int型的十进制数都会对应一个char型的字符,所以我们的字符char类型变量可以和整数int类型变量互相转换。
从上图中我们可以看出,我们定义的变量c和变量d,他们的值分别为'x'和's',在表中可以看出,其实他们也分别对应整数120和115。
2.4 int和char的等价关系
char类型变量其实就是int类型变量,区别在于他们的字节大小不同。所以我们的变量c和变量d也可以这么赋值:
char c = 120, d = 115;
这样赋值的结果和下面这样是一模一样的哦!
char c = 'x', d = 's';
2.5 unsigned类型
unsigned int a = 10; unsigned char c = 120;
看上面的代码,我们还可以在变量类型前面加上unsigned,意思为无符号,就是说这些变量的值不能是负数了,所以有下面的结论:
int类型变量为4字节(32位):
无符号的int类型取值范围为:0 ~ 4394967295
有符号的int类型取值范围为:-2147483648 ~ 2147483647
char类型变量为1字节(8位):
无符号的char类型取值范围为:0 ~ 255
有符号的char类型取值范围为:-128 ~ 127
三、本期问题
既然知道了有符号数和无符号数,那小伙伴们知道如果一个unsigned char变量值为256,或者值为-1,那么它真实的值是多少呢?越界溢出(翻转)问题是企业面试的时候常考的问题,我们在下期讲解吧。
如果大家喜欢可以关注转发加收藏哦,看更多有趣干货!