天天看點

【c庫】01-cassert使用斷言

距離上次更新不知不覺,又是半個月過去了。總是如此拖更,我的内心也感覺到了非常愧疚。不過cpp基礎實在是沒什麼思路了,不知道應該寫點什麼(其實是知道的,按照進度,應該要更新有指針無繼承的類了),但總之,最近沒有繼續更新它的想法。

不過好在,我們現在有了全新的篇章了,也就是c++的标準庫。有一句話怎麼說的來着,不會标準庫的程式員不是一個好設計師,那麼,我們就從c标準庫開始努力學起吧!

cassert,也就是斷言,其中有一個函數assert(),無傳回值,參數寫表達式,如果表達式的值為False,那麼就會導緻斷言失敗,程式終止。

也就是說,斷言相當于一個預期的結果,我希望是怎麼樣的,我可以先提出來,如果程式發現和我預期的不一樣,那麼就終止。

#include <iostream>
#include <cassert>

using std::cout;
using std::endl;

int main()
{
    int a = 0;

    // 斷言成功,什麼都不做,繼續運作
    assert(a == 0);
    cout << "a == 0" << endl;

    // 斷言失敗,程式在這裡報錯,并終止
    assert(a != 0);
    cout << "a != 0" << endl;
}
           

這有什麼用呢?按照我的了解,應該就是用于程式調試的。在調試的時候,可以在一些地方設定斷言,來測試程式的運作結果是否符合預期。正式使用的時候,應當不使用斷言。否則,程式出了點問題,咔,停止運作了,這個似乎不是很合适。

總之,今天的cassert看起來就是一個比較簡單的部分。也沒什麼特别值得說的了。