C/C++常识

一、

bool 是 C++ 布尔类型,用来表示逻辑值,只有两种取值:

  • true:真(等价数值 1
  • false:假(等价数值 0

二、

逻辑运算符

运算符 名称 格式 规则
! 逻辑非(取反) !a a 为 true → false;a 为 false → true
&& 逻辑与 a && b 两边全 true,结果才 true;否则 false
` ` 逻辑或 `a b` 任意一边 true,结果就 true;全 false 才 false

关键特性:短路求值(必考)

  1. a && b:如果 a 是 false,不会执行 b
  2. a || b:如果 a 是 true,不会执行 b

三、

关系(比较)运算符 → 返回 bool

> < >= <= == != 表达式运算结果一定是 bool

四、算术运算符(+ - * / %

算术运算得到数字 ,数字本身不是 bool ,只有在需要 bool 的地方才隐式转换: 转换规则复习:0→false,所有非 0(正数、负数)→true

五、

assert断言宏(不是函数!),定义在头文件:

复制代码
#include <cassert>

作用:检测一个条件是否成立

  • 如果括号内表达式 == true:什么都不做,程序继续运行
  • 如果括号内表达式 == false:程序直接终止,打印报错信息(文件名、行号、失败条件)

六、

一、while 循环

语法

复制代码
while(条件表达式)
{
    循环体;
}
  1. 先判断条件(表达式隐式转 bool)
  2. 条件为 true → 执行循环体
  3. 执行完回到开头再次判断条件
  4. 条件 false → 直接跳出循环

特点:先判断,后执行。条件不成立,循环体一次都不运行。

复制代码
int i = 1;
while(i <= 10)
{
    cout << i << " ";
    i++; // 一定要更新变量,否则死循环!
}

二、do while 循环

复制代码
do
{
    循环体;
}while(条件); // 末尾分号不能丢!

执行流程:

  1. 先执行一次循环体
  2. 再判断条件
  3. true:继续循环;false:退出

特点:先执行,后判断。循环体至少执行 1 次!

复制代码
int i = 1;
do
{
    cout << i << " ";
    i++;
}while(i <= 10);

三、for 循环(最常用)

复制代码
for(表达式1; 表达式2; 表达式3)
{
    循环体;
}
  • 表达式 1:初始化(只执行 1 次)
  • 表达式 2:循环条件(判断,bool)
  • 表达式 3:每次循环结束后执行(更新变量)

执行顺序: 初始化 → 判断条件 → 循环体 → 更新 → 判断条件 → 循环体......

复制代码
// i从1到10
for(int i = 1; i <= 10; i++)
{
    cout << i << " ";
}

灵活写法(三个表达式都可以省略)

复制代码
for(;;) // 等价 while(true) 死循环
{
    
}

四、循环控制关键字 break /continue

1. break

直接跳出当前整个循环,循环彻底结束

复制代码
for(int i = 1; i <= 10; i++)
{
    if(i == 5)
        break;
    cout << i; // 输出1 2 3 4
}

2. continue

终止本次循环,立刻进入下一轮条件判断

复制代码
for(int i = 1; i <= 10; i++)
{
    if(i == 5)
        continue;
    cout << i; // 输出1234678910,跳过5
}

⚠️ 注意:continuewhile 中使用时,要小心变量更新位置,防止死循环!

复制代码
// 危险写法!i++ 在continue后面,永远执行不到
while(i <= 10)
{
    if(i == 5) continue;
    i++; 
}
相关推荐
j7~2 小时前
【Linux】二十六.线程篇三《Linux多线程编程:线程控制、线程ID以及进程地址空间分布、线程局部存储__thread以及clone系统调用》---详解
linux·运维·服务器·开发语言·c++·多线程编辑·线程的控制
luj_176811 小时前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
zmzb010312 小时前
C++课后习题训练记录Day175
开发语言·c++
啦啦啦啦啦zzzz13 小时前
工具:动态类工厂和用配置文件存储属性
c++·设计模式·工具·动态工厂
脱胎换骨-军哥13 小时前
C++ 代码规范与格式化指南
开发语言·c++·代码规范
迷途之人不知返15 小时前
lambda表达式
c++
@三十一Y15 小时前
C++:红黑树的实现
开发语言·c++
_wyt00115 小时前
拓扑排序:有向无环图的排队艺术
c++·拓扑排序·队列
皓月斯语15 小时前
B2118 验证子串
c++·题解