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

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
http://www.xdnf.cn/news/4038.html

相关文章:

  • Cisco Packet Tracer 选项卡的使用
  • Python中的客户端和服务端交互的基本内容
  • vue实现AI问答Markdown打字机效果
  • 【C/C++】函数模板
  • Auto.js 脚本:清理手机数据但保留账号
  • 第R8周:RNN实现阿尔兹海默病诊断(pytorch)
  • 基于EFISH-SCB-RK3576工控机/SAIL-RK3576核心板的网络安全防火墙技术方案‌(国产化替代J1900的全栈技术解析)
  • Python生活手册-正则表达式:从快递单到咖啡订单的文本魔法
  • Level DB --- MergingIterator
  • Compose 中使用 WebView
  • 基于YOLOv的目标检测训练数据构建方法研究—图像采集、标注、划分与增强一体化流程设计
  • Softmax回归与单层感知机对比
  • 【platform push 提示 Invalid source ref: HEAD】
  • 双目视觉的核心目标
  • NGINX 的 ngx_http_auth_jwt_module模块
  • 模块方法模式(Module Method Pattern)
  • JavaScript 实现输入框的撤销功能
  • 算力经济模型推演:从中心化到去中心化算力市场的转变(区块链+智能合约的算力交易原型设计)
  • Python项目源码57:数据格式转换工具1.0(csv+json+excel+sqlite3)
  • C++ 类与对象(下)—— 进阶特性与底层机制解析(构造函数初始化,类型转换,static成员,友元,内部类,匿名对象)
  • 基于 HTML 和 CSS 实现的 3D 翻转卡片效果
  • WebRTC 服务器之SRS服务器概述和环境搭建
  • 【算法笔记】动态规划基础(二):背包dp
  • TopK题-快速选择方法
  • 数据结构实验8.1:图的基本操作
  • 联邦学习的深度解析,有望打破数据孤岛
  • 005-nlohmann/json 基础方法-C++开源库108杰
  • Sim Studio 是一个开源的代理工作流程构建器。Sim Studio 的界面是一种轻量级、直观的方式,可快速构建和部署LLMs与您最喜欢的工具连接
  • 网络安全自动化:找准边界才能筑牢安全防线
  • 数据结构中 数组、链表、图的概念