# 🎮 编程基础
# 1. 数据类型和关键字
数据类型:
| 数据类型 | 关键字 | 取值 | 字节 | 
|---|---|---|---|
| 整型 | int |  ~ | 4 | 
| 字符型 | char |  ~ | 1 | 
| 布尔型 | bool |  true / false |  1 | 
| 实型 | float |  4 | |
double |  8 | 
关键字:关键字是 C++ 中预先保留的单词(标识符)。C++关键字如下:
| asm | do | if | return | 
| auto | double | inline | short | 
| bool | dynamic_cast | int | signed | 
| break | else | long | sizeof | 
| case | enum | mutable | static | 
| catch | explicit | namespace | static_cast | 
| char | export | new | struct | 
| class | extern | operator | switch | 
| const | false | private | template | 
| const_cast | float | protected | this | 
| continue | for | public | throw | 
| default | friend | register | true | 
| delete | goto | reinterpret_cast | try | 
提示
在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义。
# 2. 常量和变量
2.1 常量:用于记录程序中不可更改的数据
语法:
- 宏常量: 
#define 常量名 常量值 // 宏常量 const常量:const 数据类型 常量名 = 常量值
示例:
// 1、宏常量
#define day 7
int example() {
	cout << "一周里总共有 " << day << " 天" << endl;
	day = 8;  //报错,宏常量不可以修改
	//2、const修饰变量
	const int month = 12;
	cout << "一年里总共有 " << month << " 个月份" << endl;
	month = 24; //报错,常量是不可以修改的
}
 1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
2.2 变量:给一段指定的内存空间起名,方便操作这段内存
语法:数据类型 变量名 = 变量值 // 变量名由字母、数字和下划线组成,且开头只能是字母或下划线
示例:
#include<iostream>
using namespace std;
int example() {
	//变量的定义
	//语法:数据类型  变量名 = 初始值
	int a = 10;
	cout << "a = " << a << endl;  // out: a = 10
}
 1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
2.3 标识符命名规则
作用:C++ 规定给标识符(变量、常量)命名时,有一套自己的规则
- 标识符不能是关键字
 - 标识符只能由字母、数字、下划线组成
 - 第一个字符必须为字母或下划线
 - 标识符中字母区分大小写
 
建议
给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读
# 3. 运算符
3.1 算术运算符
作用:用于处理四则运算,算术运算符包括以下符号:
| 运算符 | 术语 | 示例 | 结果 | 
|---|---|---|---|
+ |  正号 | +3 |  3 | 
- |  负号 | -3 |  -3 | 
+ |  加 | 10 + 5 |  15 | 
- |  减 | 10 - 5 |  5 | 
* |  乘 | 10 * 5 |  50 | 
/ |  除 | 10 / 5 |  2 | 
% |  取模(取余) | 10 % 3 |  1 | 
++ |  前置递增 | a=2; b=++a; |  a=3; b=3; | 
++ |  后置递增 | a=2; b=a++; |  a=3; b=2; | 
-- |  前置递减 | a=2; b=--a; |  a=1; b=1; | 
-- |  后置递减 | a=2; b=a--; |  a=1; b=2; | 
3.2 赋值运算符
作用:用于将表达式的值赋给变量,赋值运算符包括以下几个符号:
| 运算符 | 术语 | 示例 | 结果 | 
|---|---|---|---|
= |  赋值 | a=2; b=3; |  a=2; b=3; | 
+= |  加等于 | a=0; a+=2; |  a=2; | 
-= |  减等于 | a=5; a-=3; |  a=2; | 
*= |  乘等于 | a=2; a*=2; |  a=4; | 
/= |  除等于 | a=4; a/=2; |  a=2; | 
%= |  模等于 | a=3; a%2; |  a=1; | 
3.3 比较运算符
作用:用于表达式的比较,并返回一个真值或假值,比较运算符有以下符号:
| 运算符 | 术语 | 示例 | 结果 | 
|---|---|---|---|
== |  相等于 | 4 == 3 |  0 | 
!= |  不等于 | 4 != 3 |  1 | 
< |  小于 | 4 < 3 |  0 | 
> |  大于 | 4 > 3 |  1 | 
<= |  小于等于 | 4 <= 3 |  0 | 
>= |  大于等于 | 4 >= 1 |  1 | 
3.4 逻辑运算符
作用:用于根据表达式的值返回真值或假值,逻辑运算符有以下符号:
| 运算符 | 术语 | 示例 | 结果 | 
|---|---|---|---|
! |  非 | !a |  如果 a 为假,则 !a 为真;  如果 a 为真,则 !a 为假。 | 
&& |  与 | a&&b |  如果 a 和 b 都为真,则结果为真,否则为假。 | 
|| |  或 | a||b |  如果 a 和 b 有一个为真,则结果为真,二者都为假时,结果为假。 | 
# 4. 程序流程结构
  // 1.判断结构
  if(表达式) {
    ...
  } else if(表达式) {
    ...
  } else {
    ...
  }
  // 1.2 三目运算符
  int max = a > b ? a : b;
  // 2.当结构
  while (表达式) {
    ...
  }
  // 3.直到结构
  do {
    ...
  } while (表达式);
  // 4.选择结构
  switch(变量) {
    case 变量值1:
      break;
    case 变量值2:
      ...
    default:
      ...
  }
  // 5.for循环
  for (int i = 0; i < 10; i ++)
  {
    ...
  }
  // 6.跳转语句
  break;
  continue;
  goto;
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# 5. 数组
# 6. 函数
函数的定义
函数的调用
形参和实参
值传递和地址传递
函数提高-默认参数
// 函数中变量f默认为false int add(int a, int b, bool f = false) { if (f) { return a - b; } else { return a + b; } } ... add(1, 2); // 1 + 2 add(1, 2, true); // 1 - 2 /* Notes: 1.如果某个位置设置了默认参数,那么在这个位置的右侧参数就必须也设置默认值 2.如果函数声明有默认参数,函数实现就不能有默认参数(声明和实现只能在其中一个中设置默认参数) */ int func(int a = 10, int b = 10); // 函数声明设置默认参数 // 函数实现设置默认参数 int func(int a = 10, int b = 10) { return a + b; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
221
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 7. 指针
- 常量指针  
const int *p;指针的指向可以改,但指针指向的值不可以改 - 指针常量  
int * const p;指针指向的值可以改,但指针的指向不可以改 const int * const p;都不可以改
# 8. 结构体
- 三种赋值方式
 
struct Student{
  char name[10];  // 名字
  int age;        // 年龄
  int id;         // 校园号
} s1; // 第一种,在结构体定义后添加变量名,此处为s1
// 第二种,先创建变量,再赋值
struct Student s2;
s2.age = 10;
// 第三种,在创建时使用中括号赋值
struct Student s3 = {"张三", 15, 12431};
 1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
- 结构体中const的使用场景:使用const来防止误操作