专栏首页编程学习基地断言(assert)有多重要你不会不知道吧

断言(assert)有多重要你不会不知道吧

断言(assert)

编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。同样,程序投入运行后,最终用户在遇到问题时可以重新启用断言。

简单来说如果结果和你的预期一样,那么OK,结果为真继续运行.如果结果和预期不符,那么程序会抛出一个系统级错误(不是异常),并且终止程序运行。

assert() 用法

assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:

#include <assert.h>
void assert( int expression );  //expression:布尔表达式

assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息

然后通过调用 abort 来终止程序运行。

示例:

#include <stdio.h>
#include <assert.h>
int main(void)
{
 FILE* fp;
 fp = fopen("test.txt", "w");//以可写的方式打开一个文件,如果不存在就创建一个同名文件
 assert(fp); //所以这里不会出错
 fclose(fp);
 fp = fopen("noexitfile.txt", "r");//以只读的方式打开一个文件,如果不存在就打开文件失败
 assert(fp); //所以这里出错
 fclose(fp); //程序永远都执行不到这里来
 return 0;
}

运行报错如下:

控制台输出如下:

Assertion failed: fp, file D:\vs2019\Console\微信公众号推送\微信公众号推送\微信公众号推送.cpp, line 11

工程文件使用示例:

void resize(int num)
{
    if(num<0)
        assert(nullptr);
    if(num >len)
  //...
}

End


本文分享自微信公众号 - 编程学习基地(LearnBase),作者:deroy

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-01-20

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你没中过勒索病毒,不知道备份有多重要

    今天是春节放假前的最后一天,照例对自己一些数据开始进行了备份。突然想到关于数据备份有些心得想要分享下,于是写了这篇文章。

    twowinter
  • VR科普|不会吧!这么多好玩的VR应用,你竟然不知道!

    VRPinea
  • 你不会知道编程语言会把0.1+0.2算成多少

    从小我们就知道 0.1 + 0.2=0.3。但是,在光怪陆离的计算世界中,运算方式却大相径庭。

    小白学视觉
  • 不要轻易碰我,不然我就知道你有多软了 | Science Robotics

    最近的研究成果,是一双布满传感器的新手套:无论灵敏度还是实时性,都以前更加像人类皮肤了。

    量子位
  • 不要轻易碰我,不然我就知道你有多软了 | Science Robotics

    最近的研究成果,是一双布满传感器的新手套:无论灵敏度还是实时性,都以前更加像人类皮肤了。

    量子位
  • R语言有多强大?十个你不知道的功能

    R语言的确提供了很全面的统计分析的软件包,比如CRAN,Bioconductor,Neuroconductor,以及ROpenSci;并且提供了优秀的包管理功能...

    大数据文摘
  • pytest的一些知识点

    pytest个人觉得很好用。但是有些功能老是忘记。 昨天全面扫描了以下官方文档,记录了一些东西,权且当作笔记吧。 官网地址: https://docs.pyte...

    赵云龙龙
  • 正经人谁写 Junit 啊!

    惊!你这单元测试的姿势都不对,就和打王者一样,同样是玩游戏,有人躺着,有人跪着……

    程序员小航
  • 30分钟QUnit入门教程

    30分钟让你了解Javascript单元测试框架QUnit,并能在程序中使用。 QUnit是什么 QUnit是一个强大,易用的JavaScript单元测试框架,...

    Bob.Chen

扫码关注云+社区

领取腾讯云代金券