1. 数据类型介绍
C语言有丰富的数据类型。使用整型类型int 表示整数,字符类型char表示字符,浮点数float表示小数。
下面给给大家盘点以下C语言的各种数据类型。今天主要讲内置数据类型。
1.2布尔类型
这边我重点讲一下布尔类型。
C语⾔原来并没有为布尔值单独设置⼀个类型,而是使用整数0表示假,非零值表示真。
在C99中引入了布尔类型,专门表示真假
- 布尔类型的使用得包含头文件<stdbool.h>
- 布尔类型的变量取值只有ture 和false俩种
#include <stdbool.h>
#include <stdio.h>
int main()
{
bool flag = true; //bool是数据类型,flag是自己定义的变量,true指给变量初始化
if (flag)
{
printf("i like c");
}
return 0;
}
这段代码可能有很多小伙伴看不懂,没关系。我给大家细讲。
首先,使用bool这个数据类型一定要包含头文件<stdbool.h>,为什么要写数据类型,这是因为编译器只有知道了数据类型,才知道怎么操作数据。而flag是我们自己定义的变量,后面会讲。接下来的 = 是赋值运算符,要注意 ==这个才是相等。最后那个true指的是给它初始化,如果不懂也可以理解为赋值。要注意布尔类型只有true 和false俩个值。
其次,if 语句给大家浅浅讲一下,if后面要加表达式,比如在()可以里面放1 ,1+2,还有上面的flag等等,只要括号里面为真,就执行下面的语句。大家可以自己去敲一下。注意一下数字的话,0为假,非0为真。
1.3 sizeof运用方法
sizeof 是⼀个关键字,也是操作符。专⻔是⽤来计算数据类型⻓度的,也能计算变量、表达式的长度,单位是字节
我知道大家看文字不理解,我这边用代码给大家展示
int main()
{
int a = 10; //int指的是整型的数据类型,a是变量 ,10是给变量的初始化
printf("%zd\n", sizeof(a)); //sizeof计算出来的长度用zd占位符表示
printf("%zd\n", sizeof(int));
return 0;
}
这时候大家可能就会问,知道数据类型的长度有什么用呢?这是因为从堆上分配空间的时候,需要知道每一个类型的大小,才能准确分配内存,大家了解一下就行。
大家可以看一下,看不懂也没事,大家只要记住sizeof也有占位符,用%zd表示就行了。
接下来,我带大家来看每个数据类型占几个字节
int main()
{
printf("%zd\n", sizeof(char));
printf("%zd\n", sizeof(short));
printf("%zd\n", sizeof(int));
printf("%zd\n", sizeof(long));
printf("%zd\n", sizeof(long long));
printf("%zd\n", sizeof(float));
printf("%zd\n", sizeof(double));
return 0;
}
最后,我要讲的是sizeof不会计算内部的表达式
图中的s=a + 2的大小是不计算的,那它的长度是多少呢?这其实是看表达式最前面的s,它的数据类型是int,所以我们可以看到它的长度是4。这边我讲的不是很到位,大家可以网上在找一下资料在去学习一下。
1.3 signed 和 unsigned
C语言中使用signed 和unsigned关键字修饰字符型和整型类型的
signed关键字,表示一个类型带有正负号
unsigned关键字,表示该类型表示零和正整数
int main()
{
int n; //它默认是带有正负号的,也就是说int就等于signed int
signed int m;//表示这个变量既包括正号,又包括负号
unsigned int q;//只表示零和正整数
return 0;
}
对于int类型,默认是带有正负号的,也就是说由于这是默认情况,关键字int 等同于signed int 。signed ⼀般都省略不写,但是写了也不算错。
2.变量
前面我们了解清楚了数据类型,其实数据类型就是用来创建变量的。
什么是变量呢?C语言中把经常变化的值称为变量,不变的值称为常量。
变量创建的语法是这样的:
int age; //整型变量
char ch; //字符变量
double weight //浮点型变量
变量在创建的时候就给一个初始值,就叫初始化
int age = 18;
char ch = 'x';
double weight = 48.8;
2.1 变量的分类
全局变量:在大括号外部定义的变量就是全局变量
局部变量:在大括号内部定义的变量就是局部变量
#include <stdio.h>
int global = 2021; //全局变量
int main()
{
int local = 2023; //局部变量
printf("%d\n", local);
printf("%d\n", global);
return 0;
}
大家要注意一下,当局部变量和全局变量同名的时候,局部变量优先使用
大家知道全局变量和局部变量在内存中存储在哪里呢?
这边大家了解一下就行了
最后我要讲的是,如果大家使用vs的话,vs非常严谨,如果一个局部变量没有初始化,就不让你使用,如果你想使用局部变量一定要初始化。全局变量没有初始化,默认是0.
正常来说一个局部变量不初始化,它的值为随机值,只不过有些编译器不一样,就像vs。但在devc++中它的值就是随机值