内容目录

运算

算术运算

+, -, * # 符合常规,分别是相加、相减、相乘
/ # 整除,如 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语句结构样式:

// bool_expr 布尔返回值的表达式,如: a > b, a != c等等。
// code_block if条件中的代码块,当条件成立时执行代码块内容。

if (bool_expr) {
    code_block
}

if示例代码:

#include <iostream>
using namespace std;

int main()
{
    int a = 10;

    if (a < 20)
    {
        cout << "a 小于 20" << endl;
	}
    cout << "a 大于或等于 20" << endl;
    return 0;
}

输出:

a 小于 20
a 大于或等于 20

if…else示例代码:

#include <iostream>
using namespace std;

int main()
{
    int a = 10;

    if (a < 20)
    {
        cout << "a 小于 20" << endl;
	}
	else {
        cout << "a 大于或等于 20" << endl;
    }
    return 0;
}

输出:

a 小于 20

嵌套if示例代码:

#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;
}

输出:

a 小于 20

if…else if… 示例代码

#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;
}

输出:

a 小于 20

switch语句及其嵌套衍生语句

switch语句结构样式:

// 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 示例代码:

#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': // 多重case用法
        cout << "做得好" << endl;
        break;
    case 'D':
        cout << "您通过了" << endl;
        break;
    case 'F':
        cout << "最好再试一下" << endl;
        break;
    default:
        cout << "无效的成绩" << endl;
    }
    cout << "您的成绩是 " << grade << endl;

    return 0;
}

输出:

周四
您通过了
您的成绩是 D

嵌套 switch 示例代码:

#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;
}

输出:

这是外部 switch 的一部分
这是内部 switch 的一部分
a 的准确值是 100
b 的准确值是 200

循环语句

循环控制语句

break # 终止循环或switch语句,并跳出当前代码块
continue # 跳过循环主体部分,继续进行下一次循环
goto # 控制执行流程跳转到被标记位置(实际开发不建议使用,容易引起逻辑混乱)

for循环

for循环语句结构样式:

// init 首先被执行,初始化循环控制变量。  
// condition 随后执行,循环判断条件,条件成立则执行code_block,反之执行increment,循环执行直到条件不成立结束循环。  
// increment 增量语句,用于改变循环控制变量。  
// code_block 代码块。

for ( init; condition; increment )
{
   code_block
}

for循环示例代码:

#include <iostream>
using namespace std;

int main()
{
    // for 循环执行
    for (int a = 10; a < 20; a = a + 1)
    {
        cout << "a 的值:" << a << endl;
    }

    return 0;
}

输出:

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循环语句结构样式:

// condition 先进行循环判断条件的判断,条件成立则执行code_block,循环执行直到条件不成立结束循环。  
// code_block 代码块。

while(condition)
{
   code_block
}

while循环示例代码:

#include <iostream>
using namespace std;

int main()
{
    // 局部变量声明
    int a = 10;

    // while 循环执行
    while (a < 20)
    {
        cout << "a 的值:" << a << endl;
        a++;
    }

    return 0;
}

输出:

a 的值:10
a 的值:11
a 的值:12
a 的值:13
a 的值:14
a 的值:15
a 的值:16
a 的值:17
a 的值:18
a 的值:19

do…while循环

do…while循环语句结构样式:

// code_block 先执行代码块。
// condition 然后进行循环判断条件的判断,条件成立则再次执行code_block,循环执行直到条件不成立结束循环。 

do
{
   code_block
}while( condition );

do…while循环示例代码:

#include <iostream>
using namespace std;
 
int main ()
{
   // 局部变量声明
   int a = 10;

   // do 循环执行
   do
   {
       cout << "a 的值:" << a << endl;
       a = a + 1;
   }while( a < 20 );
 
   return 0;
}

输出:

a 的值:10
a 的值:11
a 的值:12
a 的值:13
a 的值:14
a 的值:15
a 的值:16
a 的值:17
a 的值:18
a 的值:19

嵌套循环

将上述的多种类型的循环组合在一起

// 嵌套for循环
for ( init; condition; increment )
{
   for ( init; condition; increment )
   {
      code_block
   }
   code_block // 可以放置更多的语句
}

// 嵌套while循环
while(condition)
{
   while(condition)
   {
      code_block
   }
   code_block // 可以放置更多的语句
}

// 嵌套do...while循环
do
{
   code_block // 可以放置更多的语句
   do
   {
      code_block
   }while( condition );
 
}while( condition );

除此之外,for,while,do…while也可以互相嵌套,不常用,不做展开叙述。


死循环(无限循环)

上述三种循环,当循环条件(condition)恒为真(true)的时候,并且代码块(code_block)没有跳出语句,如break,return,goto,则循环不会结束,为死循环。


函数

使用函数的优点:

  1. 提高代码复用性 - 避免重复编写相同的代码,提高开发效率。
  2. 提高可读性 - 代码结构更加清晰,易于理解和维护。
  3. 降低耦合度,增强可维护性 - 修改一个函数不会影响其他部分,使程序更易修改和扩展。
  4. 便于调试 - 代码分块后更容易定位和修复错误。
  5. 支持递归 - 通过函数调用自身,实现复杂算法,如阶乘、斐波那契数列等。
  6. 增强可扩展性 - 通过参数化,适应不同的输入,提高灵活性。
  7. 减少代码长度 - 让 main() 及其他部分更加简洁,提高代码整洁度。
    函数结构样式:
// return_type 函数返回值类型。  
// function_name 函数名。  
// code_block 执行代码块(函数体)。  
// parameter 函数形式参数,可以有多个。可以传递的类型如:传值,传指针,传引用。  

return_type function_name( parameter1, parameter2, ...)
{
   code_block
}

函数示例代码:

#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;
}

输出:

最大值为: 200

扩展:
Lambda函数与表达式
C++中的Lambda表达式