C++ 也有and、or、not关键字?吓一跳吧!

C++ 也有and、or、not关键字?吓一跳吧!

C++ 也有and、or、not关键字?吓一跳吧!

在这里插入图片描述

一、and、or、not关键字详解

在 C++ 中,andornot 是作为 替代标记 引入的。它们分别等价于 C++ 中传统的逻辑运算符 &&(逻辑与)、||(逻辑或)和 !(逻辑非)。它们的存在主要是为了提高代码的可读性,尤其是在涉及多个逻辑运算时。

1、 and 关键字(逻辑与)

  • 功能: 执行逻辑与操作。当且仅当两个操作数都为真时,结果才为真。
  • 等价运算符:&&
  • 短路求值:&& 一样,and 也使用短路求值。如果第一个操作数为假,则不会计算第二个操作数。

示例代码:

bool isSunny =true;bool isWarm =true;if(isSunny and isWarm){// 等价于 if (isSunny && isWarm) cout <<"Perfect weather for a picnic!"<< endl;}

真值表:

操作数 A操作数 BA and B
truetruetrue
truefalsefalse
falsetruefalse
falsefalsefalse

2、or 关键字(逻辑或)

  • 功能: 执行逻辑或操作。当至少一个操作数为真时,结果就为真。
  • 等价运算符:||
  • 短路求值:|| 一样,or 也使用短路求值。如果第一个操作数为真,则不会计算第二个操作数。

示例代码:

bool hasCoffee =false;bool hasTea =true;if(hasCoffee or hasTea){// 等价于 if (hasCoffee || hasTea) cout <<"You have a hot beverage."<< endl;}

真值表:

操作数 A操作数 BA or B
truetruetrue
truefalsetrue
falsetruetrue
falsefalsefalse

3、 not 关键字(逻辑非)

  • 功能: 执行逻辑非操作。对操作数进行取反。
  • 等价运算符:!

示例代码:

bool doorLocked =true;if(not doorLocked){// 等价于 if (!doorLocked) cout <<"Warning: Door is unlocked!"<< endl;}

真值表:

操作数 Anot A
truefalse
falsetrue

4、总结与注意事项

  1. 等价性:andornot 在功能上与 &&||! 完全相同,可以互换使用。
  2. 可读性: 它们的主要优势在于提高代码的可读性,尤其是在复杂的逻辑表达式中。例如 (a > b) and (c < d) or not e 可能比 (a > b) && (c < d) || !e 更容易阅读。
  3. 兼容性: 这些替代标记是 C++ 标准的一部分。它们不是 C 语言的关键字。因此,在纯 C 代码中使用它们会导致编译错误。在 C++ 中,它们被广泛支持。
  4. 头文件: 在早期版本的 C++ 中,可能需要包含 <ciso646> 头文件来使用这些替代标记。但在现代 C++ 标准(如 C++11 及以后)中,这些关键字是核心语言的一部分,通常不需要显式包含该头文件。
  5. 使用建议: 选择使用 and/or/not 还是 &&/||/! 主要取决于个人或团队的编码风格约定。重要的是在项目中保持一致性。

二、示例

#include<iostream>#include<string>usingnamespace std;// 定义一个用户结构体structUser{int age;bool isAdmin;bool hasSubscription;bool isBanned;};// 函数:检查用户是否有访问权限boolhasAccess(const User& user){// 年龄必须在 18 到 65 岁之间bool ageValid =(user.age >=18)and(user.age <=65);// 用户是管理员或有订阅,且未被封禁bool statusValid =(user.isAdmin or user.hasSubscription)andnot user.isBanned;// 特殊规则:如果年龄是 21 岁,需要额外检查(非管理员需有订阅)bool specialCheck =not(user.age ==21andnot user.isAdmin andnot user.hasSubscription);// 最终权限:年龄有效、状态有效,且满足特殊规则return ageValid and statusValid and specialCheck;}intmain(){// 创建测试用户 User user1 ={25,true,false,false};// 管理员,未封禁 User user2 ={20,false,true,false};// 有订阅,年龄有效 User user3 ={21,false,false,false};// 年龄 21,但无订阅// 测试权限 cout <<"User1 Access: "<<hasAccess(user1)<< endl;// 输出 1 (true) cout <<"User2 Access: "<<hasAccess(user2)<< endl;// 输出 1 (true) cout <<"User3 Access: "<<hasAccess(user3)<< endl;// 输出 0 (false)return0;}

运行结果

User1 Access:1 User2 Access:1 User3 Access:0
在这里插入图片描述

代码解释

  1. 结构体和条件定义
    • 我们定义了一个 User 结构体,包含年龄、管理员状态、订阅状态和封禁状态。
    • hasAccess 函数中,使用 andornot 构建多个逻辑条件:
      • ageValid:检查年龄是否在 18 ≤ age ≤ 65 18 \leq \text{age} \leq 65 18≤age≤65 范围内。
      • statusValid:用户是管理员或拥有订阅,且未被封禁(not user.isBanned)。
      • specialCheck:特殊规则,如果年龄是 21 岁,则必须不是非管理员且无订阅的情况(避免漏洞)。
  2. 逻辑组合
    • 最终权限返回 ageValid and statusValid and specialCheck,确保所有条件同时满足。
    • main 函数中,测试不同用户案例:
      • user1:年龄 25,是管理员,满足所有条件(输出 true)。
      • user2:年龄 20,有订阅,满足条件(输出 true)。
      • user3:年龄 21,无订阅且非管理员,触发特殊规则失败(输出 false)。
在这里插入图片描述

Read more

现代 Python 开发:uv 安装、配置与最佳实践

现代 Python 开发:uv 安装、配置与最佳实践

目录 * 一、uv 是什么? * 二、uv 的安装 * 1. 通用安装方式(推荐) * 2. 包管理器安装(可选) * 3. 验证安装 * 三、uv 核心使用场景 * 1. 基础包安装/卸载 * 2. 虚拟环境管理 * 3. 项目依赖管理(兼容 pyproject.toml) * 4. 运行 Python 代码/脚本 * 四、进阶用法 * 总结 一、uv 是什么? uv 是由 Astral 公司开发的 Rust 编写的 Python 工具链,核心优势是极速(比 pip

By Ne0inhk

2026最新保姆级教程:Windows 下使用 uv 从零配置 Python (OpenCV) 环境指南

Windows 下使用 uv 从零配置 Python (OpenCV) 环境指南 本文档适用于在一台全新的 Windows 电脑上,使用 uv 快速配置vscode + Python 3.10 开发环境,并安装 OpenCV 库。同时包含关于 uv 的进阶说明。 B站配套视频 2026最新:使用uv管理python&opencv 🟢 第一步:安装 uv 包管理器 既然电脑上什么都没有,我们需要先安装这个核心工具。 1. 按下 Win + R 键,输入 powershell,按回车打开终端。 2. 复制并粘贴以下命令,按回车运行(三选一): * 或者进如 uv 下载链接 找到

By Ne0inhk
2026年1月远程工具横评:UU远程以全能六边形战士之姿,重塑行业性能标杆

2026年1月远程工具横评:UU远程以全能六边形战士之姿,重塑行业性能标杆

目录 写在前面:一场关于“效率”的军备竞赛 一、 核心突破:详解UU远程2026年1月重磅升级,如何解决远程协助世纪难题? 1.1 自定义验证码:把“报号码”从技术活变成家常便饭 1.2 客户端安全锁:远程协助时的“定海神针” 1.3 免登录远程协助:打破第一道门槛,实现真正“零门槛” 1.4 UU远程运维版定向开放:命令行批量管控,专为专业场景打造的效率引擎 二、 硬核横评:六大远程软件谁是2026年1月的性能之王? 2.1 性能之王:画质与延迟的终极较量 2.2 功能六边形战士:谁才是真正的全能王? 2.3 价格与限制:免费还是套路? 三、 综合评分与总结:2026年1月,你的最佳选择是谁?

By Ne0inhk
【Python】【数据分析】Python 数据分析与可视化:全面指南

【Python】【数据分析】Python 数据分析与可视化:全面指南

目录 * 1. 环境准备 * 2. 数据处理与清洗 * 2.1 导入数据 * 2.2 数据清洗 * 示例:处理缺失值 * 示例:处理异常值 * 2.3 数据转换 * 3. 数据分析 * 3.1 描述性统计 * 3.2 分组分析 * 示例:按年龄分组计算工资的平均值 * 3.3 时间序列分析 * 4. 数据可视化 * 4.1 基本绘图 * 示例:柱状图 * 4.2 使用 Seaborn 绘制图表 * 示例:箱型图 * 4.3 高级可视化技巧 * 示例:热力图

By Ne0inhk