首页 > 其他分享 >【Debug】“逻辑与&“与“短路与&&“、“逻辑或|“与“短路或||“

【Debug】“逻辑与&“与“短路与&&“、“逻辑或|“与“短路或||“

时间:2024-11-16 19:43:11浏览次数:3  
标签:逻辑 true 短路 && Debug NULL data

在这里插入图片描述
前情提要:今天用C++写数据结构代码,写一个while循环,p是一个链表指针,有两个条件,用&&连接,如下:

while(p->data != data && p != NULL)

然后发现第二个条件p != NULL被标黄,显示Condition is always true when reached,查了一下才发现&&是短路与。

知识搜罗
&:逻辑与;|:逻辑或
&& :短路与;||:短路或

  1. 逻辑运算符都要求两边的式子是布尔类型,且逻辑运算符最终的运算结果也是一个布尔类型,短路与/或和逻辑与/或最终的运算结果是相同的,只不过短路与/或存在短路现象;
  2. 在短路或的情况下,只要第一个表达式的值为true,整个式子就为true,在短路与的情况下,只要第一个表达式的值为false,那么整个式子就为false。

问题解决
假如采用上面的写法,如果存在p->data那么一定有p != NULL,就没有判断第二个条件的必要;

而如果p==NULL那么p->data根本不存在,这个寻找p->data的操作会出现问题(因为p指向空,何来p->data,根本不存在,空指针异常),可能导致内存泄漏,报错SIGSEGV (Segmentation fault),故要先判断是否p == NULL,再去找p->data,本质上是一个执行先后顺序的问题,所以正确的写法应该是:

while(p != NULL && p->data != data)

解决!

本专栏是记录一些debug时学到的知识/发现的问题,用以自勉(乐),每天debug一下,头发又少一点~

标签:逻辑,true,短路,&&,Debug,NULL,data
From: https://blog.csdn.net/weixin_51193374/article/details/143721154

相关文章

  • 大数据-224 离线数仓 - 数仓 技术选型 版本选型 系统逻辑架构 数据库命名规范
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(已更完)Kylin(已更完)Elasticsearch(已更完......
  • DAY65||Bellman_ford 队列优化算法(又名SPFA)|bellman_ford之判断负权回路|bellman_ford
    Bellman_ford队列优化算法(又名SPFA)94.城市间货物运输I思路大家可以发现Bellman_ford算法每次松弛都是对所有边进行松弛。但真正有效的松弛,是基于已经计算过的节点在做的松弛。给大家举一个例子:本图中,对所有边进行松弛,真正有效的松弛,只有松弛边(节点1->节点2)和......
  • 1018 Public Bike Management(多条最短路径,dijkstra+dfs+回溯)
     该题考查多条最短路径的计算,对比单条最短路,主要有两点不同:1.在dijkstra算法中记录每个结点的所有相同最短距离的前结点2.在dfs找多条最短路径时需要回溯状态拿到所有最短路径以后,我们根据题意去获取相应的结果即可1#include<bits/stdc++.h>2usingnamespacestd;......
  • 如何给逻辑卷扩容
    需要扩容逻辑卷的起因是一台使用中的服务器磁盘满了,看到使用的是逻辑卷,所以需要对逻辑卷进行扩容。这里先介绍一下什么是LVM?LVM(LogicalVolumeManager,逻辑卷管理)是一种用于磁盘管理的技术,它提供了比传统磁盘分区更灵活、更高效的数据管理方式。LVM允许用户将多个物理磁盘组......
  • Sitecore debug 工具
    由于Sitecore的调试需要老是通过log来分析,而每次更新dll都需要等待一定的时间和重复执行前端的操作逻辑,特开发一个在线编辑器的方式来方便调试。警告:请勿在生产环境使用。截图构建项目打开Frontend,使用pnpmi安装依赖包,然后pnpmbuild:vite构建项目,之后去Backe......
  • 2024.11.15 springsecurity执行力逻辑
    @Configuration@RequiredArgsConstructorpublicclassSecurityConfiguration{privatefinalSecurityHandlersecurityHandler;privatefinalJwtAuthorizeFilterjwtAuthorizeFilter;@BeanpublicPasswordEncoderpasswordEncoder(){re......
  • 铅酸电池或锂电池的电动自行车, 怎么防止过充或短路?
    防止电动自行车的铅酸电池或锂电池过充和短路是确保安全使用的重要措施。以下是一些建议和方法:防止过充使用合适的充电器:确保使用与电池类型和规格相匹配的充电器。原装或经过认证的充电器通常具有适当的电压和电流输出。智能充电器:选择具有充电截......
  • 网页直播/点播播放器EasyPlayer.js无插件H5播放器关于其后地址不带协议后缀的判断逻辑
    EasyPlayer.jsH5播放器,是一款能够同时支持HTTP、HTTP-FLV、HLS(m3u8)、WS、WEBRTC、FMP4视频直播与视频点播等多种协议,支持H.264、H.265、AAC、G711A、Mp3等多种音视频编码格式,支持MSE、WASM、WebCodec等多种解码方式,支持Windows、Linux、Android、iOS全平台终端的H5播放器,使用简......
  • 分类模型-逻辑回归
    1,逻辑回归的应用场景:逻辑回归主要用于二分类问题。在医疗领域,用于疾病诊断和治疗效果预测;在金融领域,可进行信用风险评估和金融市场趋势预测;在市场营销领域,用于客户购买行为预测和客户细分;在互联网领域,用于垃圾邮件识别和用户流失预测;在交通领域,用于交通事故风险评估等。2,逻......
  • 【Unity】仓库逻辑:拾取物体进仓库和扔掉物品
    需求说明目标:实现玩家移动过程中,拾取物体,物体被放入仓库;点击仓库中物体,重新扔回3D场景中逻辑。逻辑分析:需要玩家可以移动;需要检测玩家和物体的碰撞,并摧毁物体;需要识别物体的类别;新物体直接新建,已有的物体增加数量;需要记录仓库的物体详情列表,并响应列表的变化;需要仓库的UI......