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

C 语言逻辑运算符:组合判断,构建更复杂的条件

各类资料学习下载合集

​​https://pan.quark.cn/s/8c91ccb5a474​​

在 C 语言编程中,我们已经学习了如何使用比较运算符(如 ​​==​​​, ​​<​​​, ​​>​​)来判断两个值之间的关系,从而得到“真”或“假”的结果。但很多时候,我们需要根据多个条件的组合来进行判断。例如,判断一个人是否符合“年龄大于 18 岁 并且 拥有驾驶执照”,或者判断一个订单是否满足“金额超过 100 元 或者 是 VIP 用户”。

这时,我们就需要用到 C 语言的逻辑运算符。逻辑运算符用于连接和操作这些“真”或“假”的逻辑值,从而构建出更复杂、更强大的条件表达式。

今天,我们就来深入学习 C 语言中的三个基本逻辑运算符:逻辑非、逻辑与和逻辑或,并通过详细的代码示例来展示它们的用法和特性。


1. C 语言中的“真”与“假”

在深入了解逻辑运算符之前,需要再次强调 C 语言中对“真”和“假”的表示方式(尤其是在 C99 标准引入 ​​_Bool​​ 类型之前,以及在很多实际应用中):

  • 假 (False):用整数 0 表示。
  • 真 (True):用任何非零整数表示。通常为了方便和习惯,我们用 1 表示真。

逻辑运算符的操作数通常是比较表达式的结果(它们返回 0 或 1),或者任何整数值。逻辑运算符的运算结果也是整数 0 或 1。


2. 逻辑非运算符 (​​!​​)

逻辑非运算符是一个单目运算符,它只需要一个操作数,并且会将其逻辑值取反。

  • 如果操作数为真(非零),则 ​​!​​ 运算符返回假(0)。
  • 如果操作数为假(0),则 ​​!​​ 运算符返回真(1)。

你可以简单理解为:​​!0​​ 是 1,​​!任何非零值​​ 是 0。

语法:

!expression

示例:

int is_valid = 1; // 假设 1 表示真
int is_empty = 0; // 假设 0 表示假printf("!is_valid 的结果是: %d\n", !is_valid); // 预期: !1 -> 0
printf("!is_empty 的结果是: %d\n", !is_empty); // 预期: !0 -> 1
printf("!5 的结果是: %d\n", !5); // 预期: !非零 -> 0
printf("!0 的结果是: %d\n", !0); // 预期: !0 -> 1

3. 逻辑与运算符 (​​&&​​)

逻辑与运算符是一个双目运算符,它需要两个操作数。只有当两个操作数都为真时,​​&&​​ 运算符的结果才为真。如果其中任何一个操作数为假,结果就为假。

这相当于日常生活中的“并且”关系。

语法:

expression1 && expression2

真值表:

expression1

expression2

expression1 && expression2

真 (非零)

真 (非零)

真 (1)

真 (非零)

假 (0)

假 (0)

假 (0)

真 (非零)

假 (0)

假 (0)

假 (0)

假 (0)

示例:

int age = 25;
int has_license = 1; // 1表示有驾照// 判断是否成年且有驾照
int is_eligible = (age >= 18 && has_license);
printf("成年 && 有驾照 (%d >= 18 && %d): %d\n", age, has_license, is_eligible); // 预期: (真 && 真) -> 1age = 16;
has_license = 1;
is_eligible = (age >= 18 && has_license);
printf("成年 && 有驾照 (%d >= 18 && %d): %d

相关文章:

  • git项目迁移,包括所有的提交记录和分支 gitlab迁移到gitblit
  • Python训练打卡Day16
  • Docker —— 隔离的基本操作(2)
  • 【现代深度学习技术】现代循环神经网络07:序列到序列学习(seq2seq)
  • Java常用注解大全(基于JDK17+SpringBoot3)
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】5.4 数据抽样(简单随机抽样/分层抽样)
  • 2025 年最新树莓派 Pico 连接 ESP8266 模块实现 WiFi 通信、搭建 TCP 服务器实现数据交互详细教程
  • Softmax回归与单层感知机对比
  • C++负载均衡远程调用学习之获取主机信息功能
  • STM32教程:DMA运用及代码(基于STM32F103C8T6最小系统板标准库开发)*详细教程*
  • 杨校老师竞赛课之C++备战蓝桥杯初级组省赛
  • 从零开始开发纯血鸿蒙应用之NAPI
  • day16 numpy和shap深入理解
  • Linux 文件系统深度解析
  • 设计模式(结构型)-组合模式
  • 深入探索 51 单片机:从入门到实践的全面指南
  • 《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《用无人机仿真玩转PID控制:MATLAB四旋翼仿真建模全攻略》
  • Monster Hunter Rise 怪物猎人 崛起 [DLC 解锁] [Steam] [Windows SteamOS]
  • 数据类型:String
  • Linux:权限的理解
  • 成立6天的公司拍得江西第三大水库20年承包经营权,当地回应
  • 五一期间7名游客接连被困青海荒漠,警方提醒严禁非法穿越
  • 计划招录2577人,“国考”补录8日开始报名
  • 博裕基金拟收购“全球店王”北京SKP最多45%股权
  • 董卓的前半生:边荒之地的工具人
  • 五一假期上海虹桥边检站出入境近4.7万人次,韩国入境旅客同比增118%