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

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)

http://www.xdnf.cn/news/5192.html

相关文章:

  • AI 驱动的开发工具
  • 中国古代史1
  • 【ML-Agents】ML-Agents示例项目导入unity报错解决
  • 当冲压焊接遇上Canopen到Profinet协议转换网关
  • 4.分布式锁
  • C++进阶--AVL树的实现续
  • HC-SR04超声波测距传感器
  • Doris和Clickhouse对比
  • 视觉革命来袭!ComfyUI-LTXVideo 让视频创作更高效
  • Kotlin知识体系(七) : Flow线程控制、状态管理及异常处理指南
  • 每日脚本学习5.10 - XOR脚本
  • SSH终端登录与网络共享
  • AI与机器人学:从SLAM到导航的未来
  • HTTP/3展望、我应该迁移到HTTP/2吗
  • 【Linux】线程的同步与互斥
  • 物联网之使用Vertx实现MQTT-Server最佳实践【响应式】
  • 互联网大厂Java面试实录:Spring Boot与微服务架构在电商场景中的应用解析
  • MIT XV6 - 1.4 Lab: Xv6 and Unix utilities - find
  • vllm笔记
  • Linux510 ssh服务 ssh连接
  • 数学证明 | 逻辑的力量
  • 每天五分钟机器学习:拉格朗日对偶函数
  • 2025年渗透测试面试题总结-渗透测试红队面试三(题目+回答)
  • Pandas:数据处理与分析
  • 操作系统实验习题解析 上篇
  • UniRepLknet助力YOLOv8:高效特征提取与目标检测性能优化
  • 什么是静态住宅IP?为什么静态住宅IP能提高注册通过率?
  • 【部署】win10的wsl环境下调试dify的api后端服务
  • PyTorch API 2 - 混合精度、微分、cpu、cuda、可视化
  • torch.nn 下的常用深度学习函数