不枉初心,砥砺前行

皮皮祥的博客

欢迎留言,评论

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

assert

前言

我们在使用代码时,为了节省时间,经常进行代码的复用,那么如何保证别人在使用我们代码时可以达到预想的结果,加注释可能是一种办法,但一般都可以想到在我的函数体部分加入限制条件,但是今天我们我们介绍一种更普遍的方法,用assert断言来实现我们的想法。

在这里我们用一个增加数组元素的函数为例

  1. void AddValue(int* arr, int value, int len, int index, int size){
  2. if (arr != NULL && len > 0 && index < len && size < len) {
  3. //移动数据
  4. for (int i = size - 1; i >= index; i--) {
  5. arr[i + 1] = arr[i];
  6. }
  7. //插入元素
  8. arr[index] = value;
  9. }
  10. }

这我们可以看到,只有满足if中条件才能继续执行以下代码

我们再用断言来更改

  1. void AddValue(int* arr, int value, int len, int index, int size) {
  2. assert(arr != NULL && len > 0 && index < len&& size < len);
  3. //移动数据
  4. for (int i = size - 1; i >= index; i--) {
  5. arr[i + 1] = arr[i];
  6. }
  7. //插入元素
  8. arr[index] = value;
  9. }
  10. int main() {
  11. int arr[10] = { 1,2,3 };
  12. int len = sizeof(arr) / sizeof(arr[0]);
  13. AddValue(arr, 0, len, 0, 6);
  14. return 0;
  15. }

要注意的是断言如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行,其次使用时应加上头文件#include<assert.h>

比如我们在这里将len输入为-1

会出现以下结果

这就可以提醒使用者输入发生了错误

posted on   皮皮祥  阅读(129)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示