第一个C语言项目

使用工具:VS2022社区版

printf 打印与 mian() 函数

小试牛刀

1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>

int main()
{

printf("Hello World\n");
printf("%d\n", 100);//%d-打印出一个整数

return 0;
}
//Ctrl+F5 运行

小结

有关main()函数

main()函数是程序的入口,有且只有一个

一个工程中可以有多个.c文件,但是多个.c文件中只能有一个main函数。

初识数据类型

那么何为数据类型?又分为几种?意义是什么?大小又是多少呢?

数据类型

数据类型,其实在我们生活中经常被使用,但是在编程语言中被重新定义了一下,并且加入了一些新的知识

数据类型 = 一类数 + 这类数可以执行的操作

其中的一类数:指的就是我们数学中的整数,小数等,但是在C语言中分别叫做整型数据,浮点数

当然,C语言不是全部使用数学中的数据类型

这类数可以执行的操作:指的是一个类型的数据可以执行哪些操作,比如:整形数据我们可以进行加减乘除,字符型数据却不可以。当然可以通过某种方法实现

C语言中有哪些数据类型?

实际代码 表示内容
char 字符数据类型
short 短整型
int 整型
long 长整型
long long 更长的整型
float 单精度浮点数
double 双精度浮点数

实际运用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//字符类型
char name ="qianbimo";
//整型
int age = 18
//短整型
short num = 10
//长整型
long road = 114514
//更长的整形
long long b = 123456
//单精度浮点数
float weight = 55.5
//双精度浮点数
double d = 0.0

分这么多类型的意义是什么呢?

因为对于编程语言来说,许多数据都是人为设定的,我们输入这些数据到计算机中之后,如果我们事先不让计算机知道某一个数据的长度是多少,那么计算机就不知道应该如何处理长度,所以就会产生错误

因此,用不同数据类型在内存中占用的存储长度不同,将数据类型进行分类

这样的好处就是,我们事先让计算机知道了这个数据是什么类型,并且由于每一个数据类型的长度,都是固定好的,这样计算机处理的时候就会按照一定的长度去选数据

不同数据类型的空间大小是多少?

操作符 sizeof

sizeof的使用

在实现展示数据类型大小之前,首先我们先来引进一个新的操作符——sizeof

sizeof是一个操作符,其主要功能是计算类型或者变量所占空间的大小

1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));

return 0;
}

运行后的输出结果

但是结果并没有单位,不能让我们直观的感受到它的大小,那么问题来了,结果所隐含的单位是什么呢?

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
2
3
4
5
6
7
8
int main()
{
//创建一个变量
//类型 变量 = 赋值 或者 类型 变量(不推荐)
int age = 18;
double weight = 55.5;
char ch = 'a';
}

变量的初步应用

1
2
3
4
5
6
7
8
9
10
11
int main()
{
int age = 18;
double weight = 55.5;
age = age + 1;
printf("%d\n", age);
weight = weight - 10;
printf("%lf\n", weight);

return 0;
}

拓展:不同的数据类型打印用不同的%来表示

int-%d

float-%lf

double-%f

变量的分类

  • 局部变量
  • 全局变量

局部变量:在大括号内定义的变量

全局变量:在大括号外定义的变量

为了更好的理解举个例子

1
2
3
4
5
6
7
8
9
//全局变量 - {}外部定义的变量
int a = 100;
int main()
{
//局部变量 - {}内部定义的变量
printf("%d\n", a);

return 0;
}

但是此时输出的结果会是什么呢?10or100?

很显然结果是10但是为什么呢?

是因为在C语言中:当全局变量与局部变量名称冲突时,局部变量优先。因此我们不建议把全局变量和局部变量名字写成一样

变量的使用

scanf() 函数

在使用变量的时候,我们又要引进一个新的函数——scanf() 函数

scanf()函数是一个输入函数

scanf()函数的使用

我们可以来写一个代码求两个整数的和,来具体感受一下scanf()函数的具体表达

1
2
3
4
5
6
7
8
9
10
11
int main()
{
int a = 0;
int b = 0;
int sum = 0;
scanf("%d %d",&a, &b);
sum = a + b;
printf("sum = %d\n", sum);

return 0;
}

但是当我们直接运行时可能会出现报错

scanf()函数报错的解决办法

当我们使用VS编译器的时候,scanf()函数报错是正常现象。官方已经给了我们解决方式

  • 在源文件的第一行中添加#define CRT_SECURE_NO_WARNINGS 1 (推荐)
  • 使用scanf_s()函数来替换scanf()函数 (不推荐)
那么为什么不推荐scanf_s()函数呢?

是因为scanf_s()函数并不是c语言中所规定的标准,而是由VS编译器自己提供创造的。使用scanf_s()函数可能会导致在分享代码时,他人使用的是非VS编译器就会导致整个函数报错。