当前位置:首页C++ > 正文

野牛程序员讲少儿编程之——C++ assert 用法

作者:野牛程序员:2025-03-25 11:29:56C++阅读 1991
野牛程序员讲少儿编程之——C++ assert 用法

🦬 野牛程序员讲少儿编程之——C++ assert 用法

小朋友们,今天来聊聊 C++ 里的“秘密检查员”——assert
assert 是什么?简单来说,就是 “调试的放大镜”🔍
能帮忙快速发现代码里的问题,防止程序崩溃。


🎯 什么是 assert

assert 全名是 Assertion(断言),它的作用是:
检查某个条件是否满足,如果不满足,程序就会直接报错并停止运行!🚨

就像考试时,老师要求:"分数必须在 0 到 100 之间!"
如果发现有人考了 -10 分,就马上喊停:“不对劲!出问题了!”


🚀 assert 的基本用法

在 C++ 里,assert 需要引入 <cassert> 头文件

#include <iostream>
#include <cassert> // 引入断言库

using namespace std;

int main() {
    int age = -5; // 一个错误的年龄

    assert(age >= 0 && age <= 120); // 断言:年龄必须是 0 到 120 之间

    cout << "你的年龄是: " << age << endl;
    return 0;
}

运行结果:

Assertion failed: age >= 0 && age <= 120, file main.cpp, line 9

🚨 程序崩溃了! assert 发现 age = -5 不符合要求,马上停止程序,防止后面出大问题!


🧐 assert 怎么工作?

📌 assert(条件)

  • 如果条件满足,程序继续运行。

  • 如果条件不满足,程序会 直接报错并终止,还会告诉在哪里出问题了。


🎮 野牛程序员举个小游戏:检查分数

想象写了一个成绩检查系统,要求分数 0 ~ 100,否则报错!

#include <iostream>
#include <cassert>

using namespace std;

void checkScore(int score) {
    assert(score >= 0 && score <= 100); // 确保分数合法
    cout << "分数 " << score << " 是有效的" << endl;
}

int main() {
    checkScore(85);  // 正常
    checkScore(-10); // 这里会报错
    checkScore(120); // 这里也会报错

    return 0;
}

运行结果:

分数 85 是有效的!

Assertion failed: score >= 0 && score <= 100, file main.cpp, line 7

🚨 程序崩溃在 checkScore(-10)
因为 assert 发现 -10 这个分数不可能,直接喊停!


🎯 assert 用在哪里?

✅ 1. 防止错误输入

比如年龄不能是负数,直接用 assert 检查:

void setAge(int age) {
    assert(age >= 0); // 年龄不能是负的!
    cout << "年龄设置成功: " << age << " 岁" << endl;
}

✅ 2. 确保数组访问不越界

int arr[] = {1, 2, 3, 4, 5};
int index = 10;

assert(index >= 0 && index < 5); // 5 个元素,索引必须在 0~4 之间!
cout << "你访问了数组的第 " << index << " 个元素: " << arr[index] << endl;

🚨 assert 发现 index=10,超出了数组范围,直接报错!

✅ 3. 确保计算不会出错

int divide(int a, int b) {
    assert(b != 0); // 除数不能是 0!
    return a / b;
}

如果 b=0,程序就会直接报错,避免“除数为 0”导致的崩溃!


🛠 assert 在正式程序里会自动关闭

assert 是调试工具,正式发布的程序不需要它。
可以在 编译时加 #define NDEBUG 关闭 assert

#define NDEBUG  // 关闭 assert
#include <cassert>

assert(2 + 2 == 5);  // 这行代码不会再生效

这样 正式发布的程序不会崩溃,而在开发阶段还能检查错误!✅


🎉 野牛程序员总结

assert 检查代码中的条件,如果不满足,就报错停止。
防止输入错误、数组越界、除数为 0 等问题
只在调试阶段生效,正式发布时可以关闭。

小朋友们,快去试试 assert,让代码更安全吧!🚀


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
  • 野牛程序员讲少儿编程之——C++ assert 用法
  • 相关推荐

    最新推荐

    热门点击