2024年【C C++】详解 assert() 断言(什么是assert assert有什么作用,2024年最新极其重要

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

三、assert 的用法

语法:

  • assert(condition);
  • condition:要判断的条件

说明:

  • a、如果condition判断结果为false,则程序就会停止执行。
  • b、当程序停止执行时,assert就会断言失败,并输出一条程序的错误信息到控制台或日志文件中。
  • c、assert关键字常常用于调试程序阶段,可以用来帮助程序员在程序出现异常或错误时,快速定位问题所在,以便于检查和就修改完善。
  • d、而在程序正常部署后,assert一般就会被自动关闭。

四、assert 案例解析

案例1 : 比大小

#include <cassert>
#include <iostream>
using namespace std;

int main() {
    int a = 10, b = 20;
    assert(a > b);    // 条件不成立,程序会终止
    cout << a + b << endl;
    return 0;
}

  • 在这个例子中,条件 **a > b**不成立,程序就会在 **assert**这个语句处崩溃,输出一条相应的错误信息。

案例2 : 模拟 strlen() 函数

/*例程1*/
#include <stdio.h>
#include <assert.h>
#include <string.h>

//size_t --- unsigned int
size_t My_strlen(const char* str)//参数传数组首地址
{
	assert("str != NULL");//注意:这里我把断言取消了,要用时把双引号去掉即可
	//断言,判断是否传的空地址,及时报错纠正
	int count = 0;//计数
	//是假就不执行while循环
	//是真则执行,函数体
	//不断判断后加加(后置++,先用后加),数组元素是否为字符串结束标志位'\0'
	while (*str != '\0')
	{
		str++;
		count++;
	}
	return count;
}
int main()
{
	char arr[] = "hello bit!!!";
	int len = My_strlen(arr);
	printf("%d\n", len);//12
	return 0;
}

小结

  • a、断言需要引用头文件,<assert.h>
  • b、断言,作用是指出代码报错的位置/方便查找原因

五、assert 断言的使用原则

assert() 是一个调试程序时经常使用的,在程序运行时它计算括号内的表达式,如果表达式为 false (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。

  • (1)使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。
  • (2)使用断言对函数的参数进行确认。

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

获取](https://bbs.csdn.net/topics/618668825)**

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值