初次新建项目并编写代码

使用VS2019,新建一个C++的空项目test_1

解决方案资源管理器中找到 test_1,右键其中的源文件进行新建一个test.c

编写代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//1.主函数(main函数)
//一个工程中可以含有多个.c文件,但只能有一个main函数
//c语言是从主函数第一行代码开始执行,所以需要一个main函数-入口
//int为函数的返回类型 int是整型的意思 main为函数名 {}为函数体

//printf 库函数 屏幕上打印信息
//printf的使用 需要引用头文件 stdio.h

//编译+链接+运行代码 ctrl+f5
#include <stdio.h>

int main()
{
printf("Hello");
//%d 表示打印的是一个整数
printf("%d\n", 100);
return 0;
}

数据类型

char - 字符数据类型

short - 短整型

int - 整型

long - 长整型

long long - 更长的整型

float - 单精度浮点数

double - 双精度浮点数

注:float与double的区别在于 double的精度会高于float

比如圆周率3.1415926… 用float来表示,最多精确到小数点的后6位,而double大约可以精确到小数点后15位左右,具体精确的位数和编译器有关

当然,double的占用内存空间也更高

数据类型的占用内存

sizeof 用于计算数据类型和变量所占空间的大小

1
2
3
4
5
6
7
printf("%d\n", sizeof(char));//1
printf("%d\n", sizeof(short));//2
printf("%d\n", sizeof(int));//4
printf("%d\n", sizeof(long));//4
printf("%d\n", sizeof(long long));//8
printf("%d\n", sizeof(float));//4
printf("%d\n", sizeof(double));//8

注:在C语言标准中 sizeof(int) >= sizeof(long) 即可, 所以两者都是4 byte的大小

那么,sizeof 的单位是什么呢?

答案是:字节 - byte

扩展:计算机中的单位:

  • ​ bit - 比特位 (一个比特位可以储存一个二进制位)

  • ​ byte - 字节 - 8bit

  • ​ kb - 1024byte

  • ​ mb - 1024kb

  • ​ gb - 1024mb

  • ​ tb - 1024gb

  • ​ pb - 1024tb

常量与变量

常量 - 不能改变的量

变量 - 能被改变的量

变量

定义变量

数据类型 变量名 = 值 ;

1
2
3
4
5
6
//%lf 表示打印的是一个双精度浮点数
//%f 表示打印的是一个单精度浮点数
int age = 20;
double weight = 75.3;
printf("%d\n", age);
printf("%lf\n", weight);

变量的分类

变量分为:局部变量和全局变量

1
2
3
4
5
6
7
8
9
10
11
//全局变量 - {}外部定义的变量
int a = 100;
int main()
{
//局部变量 - {}内部定义的变量
//当局部变量和全局变量名字冲突时,局部优先
//写代码时,不建议把全局变量和局部变量名字命名成一样的
int a = 10;
printf("%d\n", a); //10
return 0;
}

变量的应用

1
2
3
4
5
6
7
8
9
10
11
12
//计算输入的两个值的和
int main()
{
int a = 0;
int b = 0;
int sum = 0;
//scanf 是输入函数 &a是把输入的值存放到a里,&b是把输入的值存放到b里
scanf("%d %d",&a,&b);
sum = a + b;
printf("sum = %d\n", sum);
return 0;
}

注意这时会报一个错误,告诉你无法使用scanf,请替换成scanf_s

scanf_s函数是VS编译提供的,并不是C语言标准,只能在VS编译器下运行

‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

在文件第一行加上下列代码即可解决报错

1
#define _CRT_SECURE_NO_WARNINGS 1

也可以找到vs的根目录,搜索newc++file.cpp文件,管理员运行后添加以上代码,之后新建的文件都会自动填写上这串代码

变量的作用域

局部变量的作用域:就是变量所在的局部范围
全局变量的作用域:整个工程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//作用域和生命周期
int val = 2022;
int main()
{
printf("1: %d\n", val);
printf("hello\n");
//printf("a = %d\n", a); //报错
{
int a = 10;
printf("a = %d\n", a); //a = 10
printf("2: %d\n", val);
}
printf("3: %d\n", val);
return 0;
}

注意:全局变量的作用域是整个工程,你可以在其他源文件中定义一个全局变量

1
int val = 2023;

当你需要在其他文件使用这个全局变量时,你需要声明变量才可以使用

1
2
//声明变量
extern int val;

生命周期

变量的生命周期:变量的创建和销毁之间的时间段

局部变量的生命周期:进入作用域时生命周期开始,出作用域生命周期结束

全局变量的生命周期:程序的生命周期

常量

常量的分类

  • 字面常量
  • const修饰的常变量
  • #define定义的标识符常量
  • 枚举常量

字面常量

1
2
3
4
5
//1.字面常量
3.14;
10;
'a';
"hello";

const修饰的常变量

1
2
3
4
//2.`const`修饰的常变量
const int num = 10; //注意num为常变量 - 具有常属性(不能被改变的属性)
//num = 20; //报错无法修改
printf("num = %d\n",num);

#define定义的标识符常量

1
2
3
4
5
//3.#define定义的标识符常量
#define MAX 10000 //#define定义的常量
int n = MAX;
//MAX = 20000; //报错
printf("n = %d\n", n);

枚举常量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//性别
//enum为枚举关键字
enum Sex
{
//这种枚举类型变量的未来可能取值
//枚举常量
//MALE = 3,赋初值 赋初值后下面打印输出的则依次是3 4 5
MALE,
FEMALE,
SECRET,
};
int main()
{
//4.枚举常量
//可以一一列举的常量
enum Sex s = MALE;
printf("%d\n", MALE); //0
printf("%d\n", FEMALE); //1
printf("%d\n", SECRET); //2
return 0;
}