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 缺点是频繁的调用会极大的影响程序的性能,增加额外的开销。
四.猜你喜欢
- C 语言 数组下标越界和内存溢出区别
- C 语言 使用指针遍历数组
- C 语言 指针和数组区别
- C 语言 指针数组和数组指针区别
- C 语言 野指针
- C 语言 函数值传递和址传递
- C 语言 函数不定长参数
- C 语言 函数指针
- C 语言 指针函数
- C 语言 回调函数 callback
- C 语言 #pragma once
- C 语言 #include <> 与 #include “” 区别
- C 语言 const 修饰函数参数
- C 语言 const 和 define 区别
- C 语言 #运算符
- C 语言 ##运算符
- C 语言 __VA_ARGS__
- C 语言 ##__VA_ARGS__
- C 语言 函数不定长参数 ##__VA_ARGS__经典案例
- C 语言 va_start 宏
- C 语言 va_end 宏
- C 语言 va_arg 宏
- C 语言 vprintf 函数
- C 语言 va_start / va_end / va_arg 自定义 printf 函数
- C 语言 main 函数
- C 语言 main 函数参数 main(int argc, char *argv[])
- C 语言 exit 函数
- C 语言 abort 函数
- C 语言 assert 函数
未经允许不得转载:猿说编程 » C 语言 assert 函数
C语言 assert 函数 - C语言零基础入门教程相关推荐
- Python reduce / map / filter 函数区别 - Python零基础入门教程
目录 一.map 函数 二.reduce 函数 三.filter 函数 四.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 Pyth ...
- Python type函数和isinstance函数区别 - Python零基础入门教程
目录 一.Python type 函数简介 二.Python isinstance 函数简介 三.Python type 函数和 isinstance 函数区别 四.猜你喜欢 零基础 Python 学 ...
- Python 匿名函数 lambda - Python零基础入门教程
目录 一.Python 匿名函数 lambda 语法 二.Python 匿名函数 lambda 调用 1.lambda 匿名函数常规使用 2. lambda 匿名函数使用不定长参数 3. lambda ...
- Python eval 与 exec 函数区别 - Python零基础入门教程
目录 一.Python eval 与 exec 函数的区别 二.价值 10 个亿的智能机器人核心代码 三.猜你喜欢 基础 Python 学习路线推荐 : Python 学习目录 >> Py ...
- C语言 const 修饰函数参数 - C语言零基础入门教程
C语言 const 修饰函数参数 - C语言零基础入门教程 目录 一.const 简介 1.const 修饰变量 2.const 修饰指针 3.const 修饰在函数名前面 4.const 修饰在函数 ...
- C语言 全局变量和局部变量区别 - C语言零基础入门教程
目录 一.全局变量和局部变量简介 1.全局变量简介 2.局部变量简介 二.全局变量和局部变量注意事项 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语 ...
- C语言 局部变量 - C语言零基础入门教程
目录 一.局部变量简介 二.局部变量注意事项 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.局部变量简介 定义在函数内部的变量称为局 ...
- C语言 全局变量 - C语言零基础入门教程
目录 一.全局变量简介 二.全局变量使用 三.全局变量使用注意事项 四.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.全局变量简介 在所 ...
- C语言 NULL 和 0 区别 - C语言零基础入门教程
目录 一.关于 NULL 定义 二.NULL 和 0 区别 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.关于 NULL 定义 NU ...
- 视频教程-Python零基础入门教程-Python
Python零基础入门教程 从2012年从事互联网至今有7年软件编程经验,曾任职国内北京互联网公司,中南林业大学授课Python 现任逻辑教育Python课程负责人,精通Python语言,精通人工智能 ...
最新文章
- luogu P4085 [USACO17DEC]Haybale Feast(尺取法 + 线段树)
- MaxCompute(原ODPS) Studio 2.7.0 版本发布,让代码效率更高
- 模型存储在哪里_区块链存储的底层存储
- 深入浅出Docker(四):Docker的集成测试部署之道
- 南京信息工程大学计算机等级考试代码,南京信息工程大学2016下半年计算机等级考试报名...
- Linux知识(4)----文件系统结构
- 天网防火墙Athena 2006正式发布
- otool nm工具命令收集
- 安航云酒店管理系统面试话术
- graphpad做折线图_Graphpad作折线图的思想
- 三国演义人物出场顺序统计(文本词频统计)
- 【cookie】cookie是什么,如何使用cookie?
- 入侵检测系统 IDS 简析
- SpringBoot 文件管理微服务 支持FastDFS/FTP/阿里云存储、华为云存储/天翼云存储/联通云存储移动云存储
- rg1 蓝光危害rg0_防蓝光危险评估结果是RG0的台灯
- SpringBoot微信点餐开源系统
- 说一下DDOS攻击与CC攻击的区别
- 枚举:1.对于给定的n个位于同一二维平面上的点,求最多能有多少个点位于同一直线上
- Android 验证码倒计时
- 计算机科学与技术可以考什么事业编,什么专业能考事业单位
热门文章
- “控本焦虑”的工程企业 用钉钉宜搭找到了低成本数字化的“捷径”
- 戏说云栖,如果这些名人参加云栖大会。。。
- 凯度信息之美奖揭晓,数据可视化后有多“性感”?
- TensorFlow Hub介绍:TensorFlow中可重用的机器学习模块库
- 工业发展 安全护航 2021年工业互联网安全发展峰会成功召开
- 锐捷发布极简以太全光解决方案 打造“不一样”的全光网
- 剧情反转:今年AI要凉!薪资碾压全行,但人才缺500万!
- 微服务精华问答 | 微服务有什么优点和不足呢?
- Cloud一分钟 |高通预在年底与苹果和解;比特币绝地反弹;广电拿下5G,或成第四大运营商...
- python大列表分割成小列表_Python有什么方法将列表分割成大小均匀的块?求使用实例...