C语言中断言库与断言函数assert()的用法总结

news2024/11/26 7:46:42

断言库与断言函数的相关使用总结!

  • 断言函数的使用
  • 断言函数及断言库总结
      • #define NDEBUG
  • 断言函数在实现常见算法中的使用

断言函数的使用

话不多说,先来个例子感受一番断言函数assert()到底有什么功能。
在这里插入图片描述

由上面例子可知,assert()函数中在z的值大于40的时候什么问题都没有,可当z的值小于40的时候就直接报错Assertion failed,并且给出了报错行就在assert()函数这一行,说明z小于40时没有assert()函数直接终止了程序

断言函数及断言库总结

断言函数函数原型为:void assert (int expression),包含在头文件assert.h
他接受一个整形表达式作为参数(z > 40):
如果表达式为假,则assert()函数就在标准错误流中写入一条错误信息,也就是报错嘛。并且会调用abort()函数终止程序(**abort()函数的原型就在stdib.h**中)。
如果表达式为真,则程序顺利通过。

#define NDEBUG

使用assert()函数不仅可以自动标识出出问题的行号,而且如果觉得程序没有什么问题,可以在#include <assert.h>头文件前面加上#define NDEBUG,由下图可以看到,加了#define NDEBUG之后assert()函数就失效了。
在这里插入图片描述

断言函数在实现常见算法中的使用

断言函数在一些算法中,经常出现,作为判断某个指标是否达标的条件。比如在队列实现中
例如:队列指针为Queue * pq;
在一些入队、出队等操作中会先检验一下pq指针是否为空,这个时候就可以使用断言函数assert(pq);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/649862.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速开发框架:一招解锁企业流程化管理!

在流程化管理时代&#xff0c;什么样的平台可以帮助企业实现高效率发展&#xff1f;在信息化爆炸式发展的今天&#xff0c;有很多企业期望能通过专用的快速开发框架实现提质增效发展。目前&#xff0c;低代码技术平台是较为盛行的平台&#xff0c;拥有易操作、灵活、增效等优势…

AntDB数据库灾备方案介绍

AntDB灾备方案(双中心方案) AntDB数据库节点分布于两个机房&#xff0c;并使用 patroni etcd 组件进行HA管理&#xff0c;主节点故障时能自动切换。切换时优先选择同机房的同步slave节点选举为new master。 部署图中相关组件说明&#xff1a; ⚫patroni&#xff1a;通过参…

Revit中楼梯该怎么画?包教包会!

绘制楼梯是室内装修中必不可少的一部分&#xff0c;因为楼梯的安装不仅仅是为了连接不同楼层&#xff0c;更是装饰整个室内空间的重要组成部分。 在楼梯的绘制过程中&#xff0c;需要结合实际情况进行设计&#xff0c;包括楼层高度、楼梯数量、台阶宽度、扶手高度等因素&#…

AntDB数据冷热分离方案

数据冷热分离 数据的存在价值&#xff0c;在于其被使用的程度&#xff0c;即被查询或更新的频率。在不同的业务系统中&#xff0c;人们对处于不同时期的数据有着不同的使用需求。比如&#xff0c;在网络流量行为分析系统中&#xff0c;客户会对最近一个月公司发生的安全事件和…

树莓派系统卸载桌面环境及系统瘦身

在我们刚入门树莓派时使用都是带桌面环境的系统&#xff0c;系统自带了非常多的实用软件&#xff0c;在学习和使用了一段时间后&#xff0c;我发现已经完全用不到桌面环境了&#xff0c;平时几乎都是通过 ssh 远程工具进行交互&#xff0c;并以命令形式来对系统进行操作。 Ras…

PHP日期时间函数date() 详解

**date()函数是我们在php开发中常碰到并且会使用到的一个日期函数&#xff0c;下面我来给大家介绍date()函数的一些基本扮靓和方法&#xff0c;有需要了解的朋友可进入参考. 日期时间函数是PHP 的核心组成部分。无需安装即可使用这些函数。下面来详细说说date函数的具体用法&a…

Python(request)爬虫有多强大?

requests是Python中的一种HTTP客户端库&#xff0c;用于发送HTTP请求并获取服务器响应。使用requests库可以轻松地进行常见的HTTP操作&#xff0c;如GET、POST、PUT、DELETE等&#xff0c;支持HTTPS和HTTP连接以及摘要验证、基本认证等身份验证方式。 因此&#xff0c;Python的…

嵌入式QT 树形浏览 - navListView

目录 1、什么是树形浏览 2、示例 3、树形浏览设计依赖文件 4、navListView 使用过程 4.1 添加文件 4.2 QListView提升为树形浏览 4.3 树形浏览设计 4.4 树形浏览功能实现 4.5 界面切换 4.6 树形浏览实现界面切换 1、什么是树形浏览 像下图这种左侧带有可以点击切换…

“小白“如何理解数据库

目录 前言 1.什么是数据库 2.数据库的用处 2.1数据库与文件的对比 3.使用数据库 3.1建立数据库 3.2建立表 3.3存储数据 4.服务器&#xff0c;数据库&#xff0c;表关系 5.数据库的分类 5.1MySQL架构 5.2SQL分类 5.3存储引擎 5.3.1什么是存储引擎 5.3.2如何查看存…

Lucene(9):Lucene优化

1 解决大量磁盘IO config.setMaxBufferedDocs(100000); 控制写入一个新的segment前内存中保存的document的数目,设置较大的数目可以加快建索引速度。 数值越大索引速度越快, 但是会消耗更多的内存 indexWriter.forceMerge(文档数量); 设置N个文档合并为一个段 …

easyexcel多行不同的表头导出

easyexcel多行不同的表头导出&#xff08;多表格不同表头&#xff09; 一、效果展示 二、代码 /*** 导出月度报表数据信息*/ApiOperation(value "导出月度报表数据信息")Log(title "导出月度报表", businessType BusinessType.EXPORT)RequestMapping(…

linux 下 sqlserver 连接 与开发准备

最近需要再linux下开发一个服务链接SQLserver。但是没有相关经验&#xff0c;然后参考了网上的一些博客。有点心得记录如下。 主要参考了这个&#xff1a;linux连接到sqlserver命令行,Linux 下连接sqlserver (上)_廖俊涛的博客-CSDN博客linux连接到sqlserver命令行,Linux 下连…

【网络安全】这份近 200 页应急响应文档,不会还有人没看过吧?

前言 成为伟大黑客的关键在于做自己喜爱的事&#xff0c;要把一件事情做好&#xff0c;你必须热爱它。所以只要你能坚持对安全技术的热爱&#xff0c;到了这种程度&#xff0c;你就会做得更好。 本文档注重理论与实战结合&#xff0c;不仅提供关键源代码供读者快速实践&#…

UnityVR--UIManager--UI管理1

目录 前言 UI节点的结构 需要用到的组件 1. CanvasGroup 2. Button等控件的OnClick()监听 3. EventTrigger 建立UI工具集 1. 管理UI节点 2. UIBase包含了以下的工具 建立分面板的管理工具——以主面板MainUi为例 前言 UI在项目中的重要性不言而喻&#xff0c;并且UI控件的…

将conda环境导入pycharm教程(史上最详细版)

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion&#xff1a;2023.6.15 Last edited: 2023.6.15 目录 将conda环境导入pycharm教程&#xff08;史上最详细版&#xff09; 步骤一&#xff1a;打开你的pychar…

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录

Esxi直通A40显卡给ubuntu20.4系统驱动安装过程记录 背景描述 PowerEdge R750&#xff08;esxi虚拟化&#xff09; 服务器已有一张T4显卡&#xff0c;后期新增一张A40显卡&#xff0c;开一台ubuntu20.4系统直通A40显卡无法开机&#xff01; 开机问题解决后安装显卡驱动也各种报…

可防撞抗震的海格里斯HEGERLS四向穿梭车立体库货架系统

随着经济的高速发展以及科学技术的不断进步&#xff0c;现代仓储和物流行业的发展都有了质的飞跃&#xff0c;技术融入到仓储的研发与生产中&#xff0c;促进了自动化仓储设备的出现。提到自动化仓储设备&#xff0c;那就无法忽视智能搬运机器人四向穿梭车&#xff0c;四向穿梭…

【Spring学习之生命周期】什么是生命周期?什么是作用域?了解六种作用域

前言&#xff1a; &#x1f49e;&#x1f49e;从前⾯的课程我们可以看出 Spring 是⽤来读取和存储 Bean&#xff0c;因此在 Spring 中 Bean 是最核⼼的操作资源&#xff0c;所以接下来我们深⼊学习⼀下 Bean 对象。 前路漫漫&#xff0c;希望大家坚持下去&#xff0c;不忘初心&…

让你不再疑惑如何转换音频格式

你是否曾经遇到过这样的问题&#xff1f;你有一些wav格式的音频文件&#xff0c;但是它们不能在你的设备上播放&#xff0c;或者你需要将它们转换为其他格式以便更好地编辑和分享。别担心&#xff0c;转换wav格式并不是一件麻烦的事情。如果你还不知道wav格式怎么转换的话&…

今天面了个阿里拿27K出来的测试,真是砂纸擦屁股,给我露了一手啊

2023年春招已经结束&#xff0c;很多小伙伴收获不错&#xff0c;拿到了心仪的 offer。 各大论坛和社区里也看见不少小伙伴慷慨地分享了常见的面试题和八股文&#xff0c;为此咱这里也统一做一次大整理和大归类&#xff0c;这也算是划重点了。 俗话说得好&#xff0c;他山之石…