C语言 assert 函数 - C语言零基础入门教程

目录

  • 一.assert 函数简介
  • 二.assert 函数使用
  • 三.assert 函数用法总结与注意事项
  • 四.猜你喜欢

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.assert 函数简介

对于断言,相信大家都不陌生,大多数编程语言也都有断言这一特性。简单地讲,断言就是对某种假设条件进行检查。assert 宏原型定义:

//需要包含头文件 <assert.h>
#include <assert.h>/*描述:如果它的条件返回错误,则终止程序执行参数:expression : 条件判断或者表达式*/void assert( int expression );

assert 将通过检查表达式 expression 的值来决定是否需要终止执行程序。也就是说,如果表达式 expression 的值为假(即为 0),那么它将首先向标准错误流 stderr 打印一条出错信息,然后再通过调用 abort 函数终止程序运行;否则,assert 无任何作用。

二.assert 函数使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
int main( void )
{FILE *fp;fp = fopen( "456.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件assert( fp );                           //所以这里不会出错fclose( fp );fp = fopen( "123.txt", "r" );//以只读的方式打开一个文件,如果不存在就打开文件失败assert( fp );                           //所以这里出错fclose( fp );                           //程序永远都执行不到这里来return 0;
}

默认情况下,assert 宏只有在 Debug 版本(内部调试版本)中才能够起作用,而在 Release 版本(发行版本)中将被忽略。

三.assert 函数用法总结与注意事项

1.使用 assert 在函数开始处检验传入参数的合法性

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/int resetBufferSize(int nNewSize)
{//功能:改变缓冲区大小,//参数:nNewSize 缓冲区新长度//返回值:缓冲区当前长度//说明:保持原信息内容不变     nNewSize<=0表示清除缓冲区assert(nNewSize >= 0);assert(nNewSize <= MAX_BUFFER_SIZE);...
}

2.每个 assert 只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C语言 assert 函数
//@Time:2021/07/18 07:30
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************///错误写法
assert(a>=0 && b<=0 && c>0);//正确写法
assert(a>=0);
assert(b<=0);
assert(c>0);

3. assert 缺点是频繁的调用会极大的影响程序的性能,增加额外的开销。

四.猜你喜欢

  1. C 语言 数组下标越界和内存溢出区别
  2. C 语言 使用指针遍历数组
  3. C 语言 指针和数组区别
  4. C 语言 指针数组和数组指针区别
  5. C 语言 野指针
  6. C 语言 函数值传递和址传递
  7. C 语言 函数不定长参数
  8. C 语言 函数指针
  9. C 语言 指针函数
  10. C 语言 回调函数 callback
  11. C 语言 #pragma once
  12. C 语言 #include <> 与 #include “” 区别
  13. C 语言 const 修饰函数参数
  14. C 语言 const 和 define 区别
  15. C 语言 #运算符
  16. C 语言 ##运算符
  17. C 语言 __VA_ARGS__
  18. C 语言 ##__VA_ARGS__
  19. C 语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C 语言 va_start 宏
  21. C 语言 va_end 宏
  22. C 语言 va_arg 宏
  23. C 语言 vprintf 函数
  24. C 语言 va_start / va_end / va_arg 自定义 printf 函数
  25. C 语言 main 函数
  26. C 语言 main 函数参数 main(int argc, char *argv[])
  27. C 语言 exit 函数
  28. C 语言 abort 函数
  29. C 语言 assert 函数

未经允许不得转载:猿说编程 » C 语言 assert 函数

本文由博客 - 猿说编程 猿说编程 发布!



喜欢的朋友记得点赞、收藏、关注哦!!!

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

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

相关文章

【查找算法概念】与【线性表的相关查找算法】

1.知识回顾 2.查找算法相关问题汇总 2.1在哪里查找 查找表 2.2通过什么进行查找 关键字的对应 主关键字&#xff1a;比如我们可以通过一个学号来唯一确定一名学生 这里的学号就是一种主关键字。 次关键字&#xff1a;而通过一个名字李华&#xff0c;我们可能会确定不止一名…

【单例模式】

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。 一、实现方式 1. 饿汉式 在类加载的时候就创建实例&#xff0c;无论是否使用&#xff0c;实例都会被创建。优点是实现简单&#xff0c;线程安全。缺点是可能造成资源浪费&#xff0c;而程序可能不一定会使用这个实例…

大数据新视界 --大数据大厂之大数据于基因测序分析的核心应用 - 洞悉生命信息的密钥

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

目录 重要信息 大会简介 组织单位 大会成员 征稿主题 会议日程 参会方式 重要信息 大会官网&#xff1a;www.icicml.org 大会时间&#xff1a;2024年11月22日-24日 大会地点&#xff1a;中国 深圳 大会简介 第三届图像处理、计算机视觉与机器学…

最强AI绘画大模型Flux可以在SDWebUI 上使用了!超便捷的Flux模型使用教程!AI绘画零基础入门到实战教程

大家好&#xff0c;我是画画的小强 目前最强的AI绘画大模型Flux.1 横空出世有段时间了&#xff0c;模型效果也得到了广泛的认可&#xff0c;但是 Stable Diffusion WebUI 官方迟迟没有跟进&#xff0c;据说是因为要修改很多底层的处理机制&#xff0c;加之ComfyUI如火如荼&…

C++读取大文件三种方法速度比较

目录 测试说明第一种方法&#xff1a;按块读&#xff0c;一次读8kb第二种方法&#xff1a;按行读&#xff0c;一次读一行第三种方法&#xff1a;多线程并行读取完整示例 测试说明 测试文件&#xff1a;100万行&#xff0c;每一行是两个小数&#xff0c;中间用逗号隔开&#xf…

LeetCode讲解篇之377. 组合总和 Ⅳ

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 总和为target的元素组合个数 可以由 总和为target - nums[j]的元素组合个数 转换而来&#xff0c;其中j为nums所有元素的下标 而总和target - nums[j]的元素组合个数 可以由 总和为target - nums[j] - nums[k]的…

谁喝酒 1.3.0 | 这款聚会游戏完全免费,无需注册登录,简洁易用。

适合聚会时玩的游戏APP&#xff0c;完全免费&#xff0c;无需注册登录。 大小&#xff1a;36M 百度网盘&#xff1a;https://pan.baidu.com/s/1nkUi4W3UhMyEsnAiSoOP9g?pwdolxt 夸克网盘&#xff1a;https://pan.quark.cn/s/239397c0c894 移动网盘&#xff1a;https://caiyun…

【英语】4. 熟词僻义

文章目录 前言e.g.总结参考文献 前言 进行英语前后缀的复习 e.g. spell: 咒语 时期want: povertyaddress: 强调&#xff0c;地址&#xff0c;演讲bear: stand, endureblow: blast &#xff0c;冲击chair: 主席的位置 &#xff0c;掌管 chair a company fuel: add 燃料&#x…

融乐·Music 1.1.3 | 专为音乐爱好者打造,海量免费音乐资源

融乐Music提供了海量免费音乐资源&#xff0c;满足各种类型的音乐需求。界面简洁&#xff0c;操作方便&#xff0c;支持在线播放和离线下载。 大小&#xff1a;13.6M 百度网盘&#xff1a;https://pan.baidu.com/s/1AVKX747bvteAcO__3o1KCQ?pwdolxt 夸克网盘&#xff1a;http…

【含开题报告+文档+PPT+源码】基于SSM框架的线上交易商城的设计与实现

开题报告 随着互联网的快速发展&#xff0c;电子商务成为了现代化社会中不可或缺的一部分。线上交易平台的兴起&#xff0c;为商家和消费者创造了更多的交易机会和便利。然而&#xff0c;传统的电商平台通常由一家中央机构管理和控制&#xff0c;对商家和消费者的自由度有一定…

JWT集成Keycloak

一、直接使用现有域账号、密码获取token方式 1.KeyClack 使用现有配置 Client id : account-console 2.服务配置文件配置 3.API接口配置 4. 获取token 5.调用方式&#xff08;Swagger&#xff09;(代码方式直接在请求头加上token) 5.1 配置在Swagger访问 5.2 访问需要认证的接…

【JavaEE初阶】深入理解线程池的概念以及Java标准库提供的方法参数分析

前言 &#x1f31f;&#x1f31f;本期讲解关于MySQL索引事务&#xff0c;希望能帮到屏幕前的你。 &#x1f308;上期博客在这里&#xff1a;【JavaEE初阶】多线程案列之定时器的使用和内部原码模拟-CSDN博客 &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl…

Python酷库之旅-第三方库Pandas(134)

目录 一、用法精讲 601、pandas.DataFrame.plot.pie方法 601-1、语法 601-2、参数 601-3、功能 601-4、返回值 601-5、说明 601-6、用法 601-6-1、数据准备 601-6-2、代码示例 601-6-3、结果输出 602、pandas.DataFrame.plot.scatter方法 602-1、语法 602-2、参数…

【C++】入门基础介绍(下)输入输出,函数重载,缺省与引用

文章目录 7. C输入与输出8. 缺省参数9. 函数重载10. 引用10. 1 引用的概念10. 2 引用的特性10. 3 引用的使用10. 4 const引用10. 5 指针和引用的关系 11. inline12. nullptr 7. C输入与输出 iostream是 Input Output Stream 的缩写&#xff0c;是标准输入、输出流库&#xff0…

BFS解决最短路问题_最小基因变化、单词接龙_C++

BFS解决最短路问题_最小基因变化、单词接龙_C 1. 题目解析2. 算法分析3. 代码实现4. 举一反三&#xff1a;单词接龙 1. 题目解析 leetcode链接&#xff1a;https://leetcode.cn/problems/minimum-genetic-mutation/submissions/569463000/ 基因序列可以表示为一条由 8 个字符组…

【计算机网络】面试必问TCP十大机制

1. TCP协议的报文格式 说明&#xff1a; TCP 报文格式主要分为两部分&#xff1a;TCP 报文头部和数据部分。以下是对各字段的详细解释&#xff1a; TCP 报文头部 源/目的端口&#xff1a;各占用16位。表示数据从哪个进程发送&#xff0c;发送到哪个进程去。序号字段&#xff1a…

千古风流人物 陆游

简介 陆游&#xff08;1125年-1210年&#xff09;&#xff0c;字务观&#xff0c;号放翁&#xff0c;越州山阴&#xff08;今浙江绍兴&#xff09;人&#xff0c;南宋诗人、词人。后人每以陆游为南宋诗人之冠。是中国南宋时期的著名文学家、词人、政治家和军事家。 陆游出生在…

基于SpringBoot+Vue+MySQL的药品信息管理系统

系统展示 管理员界面 医生界面 员工界面 系统背景 随着医疗技术的不断提升&#xff0c;药品在治疗疾病中扮演着越来越重要的角色。传统的药品管理方式以人工方式为主&#xff0c;但人工管理难以满足现代社会快速发展的需求。因此&#xff0c;需要一种更加高效、便捷的信息化管理…