当前位置: 首页 > news >正文

C++(6):逻辑运算符

目录

1. 代码示例

示例 1:基础用法

示例 2:条件判断

2. 短路求值(Short-Circuit Evaluation)

代码示例

3. 实际应用场景

场景 1:输入合法性验证

场景 2:游戏状态判断

4. 注意事项

        逻辑运算符用于组合或修改布尔表达式(true/false)。C++ 中的逻辑运算符包括 &&(与)、||(或)、!(非)。

1. 代码示例

示例 1:基础用法
#include <iostream>
using namespace std;int main() 
{bool A = true;   // 1bool B = false;  // 0cout << "A && B: " << (A && B) << endl;  // 输出 0(false)cout << "A || B: " << (A || B) << endl;  // 输出 1(true)cout << "!A: " << !A << endl;            // 输出 0(false)cout << "!B: " << !B << endl;            // 输出 1(true)return 0;
}

示例 2:条件判断
int age = 20;
bool hasTicket = true;if (age >= 18 && hasTicket) 
{cout << "允许进入电影院" << endl;  // 条件成立,输出
}bool isRaining = false;
bool hasUmbrella = false;if (isRaining || hasUmbrella) 
{cout << "需要带伞" << endl;       // 条件不成立,不输出
} else
{cout << "无需带伞" << endl;       // 输出
}

2. 短路求值(Short-Circuit Evaluation)

  • && 的短路特性:若第一个操作数为 false,直接返回 false,不再计算第二个操作数。

  • || 的短路特性:若第一个操作数为 true,直接返回 true,不再计算第二个操作数。

代码示例
bool checkCondition() 
{cout << "执行了条件检查" << endl;return true;
}int main() 
{bool result1 = false && checkCondition();  // 不会调用 checkCondition()bool result2 = true || checkCondition();   // 不会调用 checkCondition()return 0;
}

3. 实际应用场景

场景 1:输入合法性验证
string username;
int age;cout << "输入用户名和年龄:";
cin >> username >> age;if (!username.empty() && age > 0) 
{cout << "输入有效" << endl;
} else 
{cout << "输入无效" << endl;
}
场景 2:游戏状态判断
bool isPlayerAlive = true;
bool hasAmmo = false;if (isPlayerAlive && !hasAmmo) 
{cout << "玩家存活但弹药不足!" << endl;  // 输出
}

4. 注意事项

  1. 操作数隐式转换为布尔值

    • 非零值(如 5-1)会被视为 true

    • 零值(0)被视为 false

int x = 10, y = 0;
cout << (x && y) << endl;  // 输出 0(false)

  1. 不要混淆 && 和 &

    • && 是逻辑与,用于布尔表达式。

    • & 是按位与,用于二进制位操作。

int a = 5;  // 二进制 0101
int b = 3;  // 二进制 0011
cout << (a & b) << endl;   // 输出 1(0001)
cout << (a && b) << endl;  // 输出 1(true)

相关文章:

  • 基于C语言的TCP通信测试程序开发指南
  • [ctfshow web入门] web71
  • 对话 BitMart 新任 CEO Nenter (Nathan) Chow:技术创新、全球扩张和社区赋能
  • TIME - MoE 模型代码 3.3——Time-MoE-main/time_moe/datasets/time_moe_window_dataset.py
  • 【排错】dify1.3.1插件市场安装报错问题
  • 协议路由更改路径配置
  • 计算机设计大赛山东省赛区软件开发赛道线上答辩复盘
  • 记录一次window2012r2安装配置oracle11g的过程-出现的错误以及解决方法
  • GPT-4o, GPT 4.5, GPT 4.1, O3, O4-mini等模型的区别与联系
  • 嵌入式学习笔记 - 运算放大器的共模抑制比
  • Java 原生实现代码沙箱之Java 程序安全控制(OJ判题系统第2期)——设计思路、实现步骤、代码实现
  • Java基础:代理
  • JavaScript篇:async/await 错误处理指南:优雅捕获异常,告别失控的 Promise!
  • Linux系统下安装mongodb
  • ensp的华为小实验
  • JavaSE核心知识点02面向对象编程02-06(泛型)
  • Metasploit 4.22.7:企业级渗透测试新突破
  • Open CASCADE学习|管道壳体生成
  • AI Coding的发展之路:从概念到改变世界的旅程
  • 学习黑客5 分钟深入浅出理解Linux Packages Software Repos
  • 呼和浩特推进新一轮国企重组整合:杜绝一项目一公司、一业务一公司
  • 巴基斯坦称对印精准打击造成设施损坏和人员伤亡
  • 深圳两家会所涉卖淫嫖娼各被罚7万元逾期未缴,警方发催告书
  • 壹基金发布2024年度报告,公益项目惠及937万人次
  • 欧盟公布关税反制清单,瞄准美国飞机、汽车等产品
  • 中俄元首今年首次面对面会谈,达成哪些新的重要共识?