登入|加入我們
論壇 > 台南一中資訊社 > 教學文件
發帖|
看2307|回0|收藏
樓主 Sylveon 只看他
2014-8-25 14:04:02
Assert

標頭
C   : assert.h
C++ : cassert


包含的函數
巨集函數:assert ( EXP )
使用方法:EXP為一個判斷表達式,若EXP成立的話程式會繼續執行,否則程式將會中止並產生錯誤訊息。

範例程式碼
[mw_shl_code=cpp,true]#include<iostream>
#include<cassert>
using namespace std;

int main()
{
        int a = 18;
        int b = 18;
        
        assert( a!= b );
        
        cout<< "通過 assert 的檢查" <<endl;
        cout<< a / (a-b) <<endl;
}[/mw_shl_code]

執行結果
012.PNG

可以發現,因為a!=b這個敘述是錯誤的,於是程式就被終止,避免繼續執行下面的除法運算。通常assert會用在函數套件或是Debug時使用,用來確保通過assert時,變數有達到指定的要求。

如果要取消assert的功能,可以定義NDEBUG來關閉功能,參考如下:
[mw_shl_code=cpp,true]#include<iostream>

//關閉Assert 要在 include 前加才有用
#define NDEBUG
#include<cassert>



using namespace std;
int main()
{
        int a = 18;
        int b = 18;
        
        assert( a!= b );
        
        cout<< "通過 assert 的檢查" <<endl;
        cout<< a / (a-b) <<endl;
}[/mw_shl_code]

執行結果
013.PNG



Sylveon  Yes!  發表于 2014-8-26 18:09
nam104  還是是assert的結果??  發表于 2014-8-25 23:46
nam104  第二個停止運作是因為除以零嗎?  發表于 2014-8-25 23:46

竹園論壇

首頁|電腦版