C语言 Day1
第一个C语言项目
使用工具:VS2022社区版
printf 打印与 mian() 函数
小试牛刀
1 |
|
小结
有关main()函数
main()
函数是程序的入口,有且只有一个
一个工程中可以有多个.c
文件,但是多个.c
文件中只能有一个main
函数。
初识数据类型
那么何为数据类型?又分为几种?意义是什么?大小又是多少呢?
数据类型
数据类型,其实在我们生活中经常被使用,但是在编程语言中被重新定义了一下,并且加入了一些新的知识
数据类型 = 一类数 + 这类数可以执行的操作
其中的一类数:指的就是我们数学中的整数,小数等,但是在C语言中分别叫做整型数据,浮点数
当然,C语言不是全部使用数学中的数据类型
这类数可以执行的操作:指的是一个类型的数据可以执行哪些操作,比如:整形数据我们可以进行加减乘除,字符型数据却不可以。当然可以通过某种方法实现
C语言中有哪些数据类型?
实际代码 | 表示内容 |
---|---|
char | 字符数据类型 |
short | 短整型 |
int | 整型 |
long | 长整型 |
long long | 更长的整型 |
float | 单精度浮点数 |
double | 双精度浮点数 |
实际运用
1 | //字符类型 |
分这么多类型的意义是什么呢?
因为对于编程语言来说,许多数据都是人为设定的,我们输入这些数据到计算机中之后,如果我们事先不让计算机知道某一个数据的长度是多少,那么计算机就不知道应该如何处理长度,所以就会产生错误
因此,用不同数据类型在内存中占用的存储长度不同,将数据类型进行分类
这样的好处就是,我们事先让计算机知道了这个数据是什么类型,并且由于每一个数据类型的长度,都是固定好的,这样计算机处理的时候就会按照一定的长度去选数据
不同数据类型的空间大小是多少?
操作符 sizeof
sizeof的使用
在实现展示数据类型大小之前,首先我们先来引进一个新的操作符——sizeof
sizeof
是一个操作符,其主要功能是计算类型
或者变量
所占空间的大小
1 | int main() |
运行后的输出结果
但是结果并没有单位,不能让我们直观的感受到它的大小,那么问题来了,结果所隐含的单位是什么呢?
sizeof 的单位
sizeof 的单位是计算机中常见的单位——字节Byte
计算机中最小的单位
作为常识我们知道计算机识别的是二进制即1,0
而1
所占用的空间大小为1Bit,0
所占用的空间大小为0Bit
所以我们得知Bit
就是计算机中最小的单位
常见的计算机单位的换算
1Byte=8Bit
1Kb=1024Byte
1Mb=1024Kb
1Gb=1024Mb
1Tb=1024Gb
1Pb=1024Tb
不同数据类型的空间大小
根据上面知识的学习我们已经可以了解到,输出结果的单位为Byte
那么数据类型的实际大小为:
实际代码 | 实际大小/Btye |
---|---|
char | 1 |
short | 2 |
int | 4 |
long | 4 |
long long | 8 |
float | 4 |
double | 8 |
产生大小的概念之后,我们发现short
短整型的大小为2Bit
可以理解,但是long
长整型为什么没有int
整型长呢?
那是因为在C语言的标准中 sizeof(long)>=sizeof(int)
初识常量变量
在上面的学习中已经了解到,不同的数字类型可以表示不同的东西,例如:字符用char
,数据可以选择用int
在我们的日常生活中也有许多的数据,他们大体可以分为两类:一种是不可变的数据
,另一种是一定可变的数据
。前者像,血型,性别等等,后者例如,工资,年龄体重,而在c语言当中这两种数据分别被称为:常量和变量
常量=不可改变的量
变量=能被改变的量
定义变量的方法
1 | int main() |
变量的初步应用
1 | int main() |
拓展:不同的数据类型打印用不同的%
来表示
int-%d
float-%lf
double-%f
变量的分类
- 局部变量
- 全局变量
局部变量:在大括号内定义的变量
全局变量:在大括号外定义的变量
为了更好的理解举个例子
1 | //全局变量 - {}外部定义的变量 |
但是此时输出的结果会是什么呢?10or100?
很显然结果是10但是为什么呢?
是因为在C语言中:当全局变量与局部变量名称冲突时,局部变量优先。因此我们不建议把全局变量和局部变量名字写成一样
变量的使用
scanf() 函数
在使用变量的时候,我们又要引进一个新的函数——scanf()
函数
scanf()
函数是一个输入函数
scanf()函数的使用
我们可以来写一个代码求两个整数的和,来具体感受一下scanf()
函数的具体表达
1 | int main() |
但是当我们直接运行时可能会出现报错
scanf()函数报错的解决办法
当我们使用VS编译器的时候,scanf()
函数报错是正常现象。官方已经给了我们解决方式
- 在源文件的第一行中添加
#define CRT_SECURE_NO_WARNINGS 1
(推荐) - 使用
scanf_s()
函数来替换scanf()
函数 (不推荐)
那么为什么不推荐scanf_s()
函数呢?
是因为scanf_s()
函数并不是c语言中所规定的标准,而是由VS编译器自己提供创造的。使用scanf_s()
函数可能会导致在分享代码时,他人使用的是非VS编译器就会导致整个函数报错。