运算
算术运算
+
, -
, *
# 符合常规,分别是相加、相减、相乘
/
# 整除,如 5/3 = 1
%
# 取模运算(整除之后的余数), 如 5%3 = 2
++
# 自增运算,自身整数值+1
--
# 自减运算,自身整数值-1
关系运算
==
# 相等为真
!=
# 不等为真
>
# 左侧大于右侧为真
<
# 左侧小于右侧为真
>=
# 左侧大于或等于右侧为真
<=
# 左侧小于或等于右侧为真
逻辑运算
&&
# 逻辑与,符号两边都为真则为真
||
# 逻辑或,符号两边有一个为真则为真
!
# 逻辑非,逆转逻辑状态,真的为假,假的为真
位运算
C/C++位运算详解
不过多解释,相对使用较少,现用先学。
赋值运算
灰常滴简单。
=
# 最常见的赋值运算,C = A + B
,把A+B的结果赋值给C
+=
# 加且赋值,C+=A
等价于C = C + A
,把C+A的结果重新赋值给C
-=
# 减且赋值,C-=A
等价于C = C - A
,把C-A的结果重新赋值给C
其他算术运算、位运算同理,不一一做解释:
*=
, /=
, %=
, <<=
, >>=
, &=
, ^=
, |=
杂项运算
sizeof
# 返回变量大小。详解
? :
# 条件运算符(三目运算符)详解
. 和 ->
# 成员运算符详解
(type) expr
# 强制转换运算符,把一种数据类型转换为另一种数据类型。如:float a=1.12; (int)a
详解
&
# 指针运算符(取址运算符),返回变量的地址。详解
*
# 指针运算符(间接寻址运算符),指向一个变量。详解
,
# 逗号运算符,顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。详解
运算符优先级
详情查阅 C++运算符优先级和关联性表
条件判断语句
if语句及其嵌套衍生语句
if语句结构样式:
1 2 3 4 5 6
| // bool_expr 布尔返回值的表达式,如: a > b, a != c等等。 // code_block if条件中的代码块,当条件成立时执行代码块内容。
if (bool_expr) { code_block }
|
if示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <iostream> using namespace std;
int main() { int a = 10;
if (a < 20) { cout << "a 小于 20" << endl; } cout << "a 大于或等于 20" << endl; return 0; }
|
输出:
if…else示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <iostream> using namespace std;
int main() { int a = 10;
if (a < 20) { cout << "a 小于 20" << endl; } else { cout << "a 大于或等于 20" << endl; } return 0; }
|
输出:
嵌套if示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream> using namespace std;
int main() { int a = 10;
if (a < 20) { cout << "a 小于 20" << endl; } else { if (a == 20) { cout << "a 等于 20" << endl; } else { cout << "a 不等于 20" << endl; } } return 0; }
|
输出:
if…else if… 示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include <iostream> using namespace std;
int main() { int a = 10;
if (a < 20) { cout << "a 小于 20" << endl; } else if (a == 20) { cout << "a 等于 20" << endl; } else { cout << "a 大于 20" << endl; } return 0; }
|
输出:
switch语句及其嵌套衍生语句
switch语句结构样式:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| // expr 枚举类型表达式。 // const-expr 常量表达式。 // code_block 代码块。
switch(expr){ case const-expr1 : // 当expr与const-expr1匹配的时候执行代码块1 code_block_1 break; // 可选的 case const-expr2 : // 当expr与const-expr2匹配的时候执行代码块2 code_block_2 break; // 可选的 ...... // 可以有任意数量的 case 语句 default : // 默认值可选的,当前面的case没有任何一个匹配的时候,执行默认代码块 code_block }
|
switch 示例代码:
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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| #include <iostream> using namespace std;
int main() { int day = 4;
switch (day) { case 1: cout << "周一" << std::endl; break; case 2: cout << "周二" << std::endl; break; case 3: cout << "周三" << std::endl; break; case 4: cout << "周四" << std::endl; break; case 5: cout << "周五" << std::endl; break; case 6: cout << "周六" << std::endl; break; case 7: cout << "周日" << std::endl; break; default: cout << "无效日期" << std::endl; }
char grade = 'D';
switch (grade) { case 'A': cout << "很棒!" << endl; break; case 'B': case 'C': cout << "做得好" << endl; break; case 'D': cout << "您通过了" << endl; break; case 'F': cout << "最好再试一下" << endl; break; default: cout << "无效的成绩" << endl; } cout << "您的成绩是 " << grade << endl;
return 0; }
|
输出:
嵌套 switch 示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include <iostream> using namespace std;
int main() { int a = 100; int b = 200;
switch (a) { case 100: cout << "这是外部 switch 的一部分" << endl; switch (b) { case 200: cout << "这是内部 switch 的一部分" << endl; } } cout << "a 的准确值是 " << a << endl; cout << "b 的准确值是 " << b << endl;
return 0; }
|
输出:
1 2 3 4
| 这是外部 switch 的一部分 这是内部 switch 的一部分 a 的准确值是 100 b 的准确值是 200
|
循环语句
循环控制语句
break
# 终止循环或switch语句,并跳出当前代码块
continue
# 跳过循环主体部分,继续进行下一次循环
goto
# 控制执行流程跳转到被标记位置(实际开发不建议使用,容易引起逻辑混乱)
for循环
for循环语句结构样式:
1 2 3 4 5 6 7 8 9
| // init 首先被执行,初始化循环控制变量。 // condition 随后执行,循环判断条件,条件成立则执行code_block,反之执行increment,循环执行直到条件不成立结束循环。 // increment 增量语句,用于改变循环控制变量。 // code_block 代码块。
for ( init; condition; increment ) { code_block }
|
for循环示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <iostream> using namespace std;
int main() { for (int a = 10; a < 20; a = a + 1) { cout << "a 的值:" << a << endl; }
return 0; }
|
输出:
1 2 3 4 5 6 7 8 9 10
| a 的值:10 a 的值:11 a 的值:12 a 的值:13 a 的值:14 a 的值:15 a 的值:16 a 的值:17 a 的值:18 a 的值:19
|
C++11 有基于范围的for循环,不在该系列文字基础范围,暂时不做更多展开。
基于范围的for循环
while循环
while循环语句结构样式:
1 2 3 4 5 6 7
| // condition 先进行循环判断条件的判断,条件成立则执行code_block,循环执行直到条件不成立结束循环。 // code_block 代码块。
while(condition) { code_block }
|
while循环示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream> using namespace std;
int main() { int a = 10;
while (a < 20) { cout << "a 的值:" << a << endl; a++; }
return 0; }
|
输出:
1 2 3 4 5 6 7 8 9 10
| a 的值:10 a 的值:11 a 的值:12 a 的值:13 a 的值:14 a 的值:15 a 的值:16 a 的值:17 a 的值:18 a 的值:19
|
do…while循环
do…while循环语句结构样式:
1 2 3 4 5 6 7
| // code_block 先执行代码块。 // condition 然后进行循环判断条件的判断,条件成立则再次执行code_block,循环执行直到条件不成立结束循环。
do { code_block }while( condition );
|
do…while循环示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <iostream> using namespace std; int main () { int a = 10;
do { cout << "a 的值:" << a << endl; a = a + 1; }while( a < 20 ); return 0; }
|
输出:
1 2 3 4 5 6 7 8 9 10
| a 的值:10 a 的值:11 a 的值:12 a 的值:13 a 的值:14 a 的值:15 a 的值:16 a 的值:17 a 的值:18 a 的值:19
|
嵌套循环
将上述的多种类型的循环组合在一起
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
| for ( init; condition; increment ) { for ( init; condition; increment ) { code_block } code_block }
while(condition) { while(condition) { code_block } code_block }
do { code_block do { code_block }while( condition ); }while( condition );
|
除此之外,for,while,do…while也可以互相嵌套,不常用,不做展开叙述。
死循环(无限循环)
上述三种循环,当循环条件(condition)恒为真(true)的时候,并且代码块(code_block)没有跳出语句,如break
,return
,goto
,则循环不会结束,为死循环。
函数
使用函数的优点:
- 提高代码复用性 - 避免重复编写相同的代码,提高开发效率。
- 提高可读性 - 代码结构更加清晰,易于理解和维护。
- 降低耦合度,增强可维护性 - 修改一个函数不会影响其他部分,使程序更易修改和扩展。
- 便于调试 - 代码分块后更容易定位和修复错误。
- 支持递归 - 通过函数调用自身,实现复杂算法,如阶乘、斐波那契数列等。
- 增强可扩展性 - 通过参数化,适应不同的输入,提高灵活性。
- 减少代码长度 - 让 main() 及其他部分更加简洁,提高代码整洁度。
函数结构样式:
1 2 3 4 5 6 7 8 9
| // return_type 函数返回值类型。 // function_name 函数名。 // code_block 执行代码块(函数体)。 // parameter 函数形式参数,可以有多个。可以传递的类型如:传值,传指针,传引用。
return_type function_name( parameter1, parameter2, ...) { code_block }
|
函数示例代码:
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
| #include <iostream> using namespace std;
int max(int num1, int num2);
int main() { int a = 100; int b = 200; int ret; ret = max(a, b); cout << "最大值为: " << ret << endl; return 0; }
int max(int num1, int num2) { int result; if (num1 > num2) result = num1; else result = num2; return result; }
|
输出:
扩展:
Lambda函数与表达式
C++中的Lambda表达式