查看: 2257|回復: 3
打印 上一主題 下一主題

[C/C++] Assert 介紹

[複製鏈接]
  • TA的每日心情
    慵懶
    2015-4-10 14:18
  • 簽到天數: 78 天

    [LV.6]常住居民II

    176

    主題

    612

    帖子

    3959

    積分

    管理員

    Rank: 9Rank: 9Rank: 9

    積分
    3959

    台南一中資訊社新手達陣程式設計達人 - 2014

    跳轉到指定樓層
    樓主
    發表於 2014-8-25 14:04:02 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

    趕快加入我們來參與討論吧!

    您需要 登錄 才可以下載或查看,沒有帳號?加入我們

    x
    Assert

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


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

    範例程式碼
    [C++] 純文本查看 復制代碼
    #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;
    }


    執行結果


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

    如果要取消assert的功能,可以定義NDEBUG來關閉功能,參考如下:
    [C++] 純文本查看 復制代碼
    #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;
    }


    執行結果




    點評

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

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表