assert巨集的原型定義在中,其作用是如果它的條件返回錯誤(為假),則終止程式執行.
assert本質上是乙個巨集,而不是乙個函式
原型:#include
void assert( int expression );
它先向stderr列印一條出錯資訊,然後通過呼叫 abort 來終止程式執行。
assert()的缺點是,頻繁的呼叫會極大的影響程式的效能,增加額外的開銷。
在除錯結束後,可以通過在包含#include 的語句之前插入 #define ndebug來禁用assert呼叫
作用:1.在函式開始處檢驗傳入引數的合法性2.每個assert只檢驗乙個條件,因為同時檢驗多個條件時,難以判斷問題位置
3.不能使用改變環境的語句,因為assert只在debug個生效,如果這麼做,會使用程式在真正執行時遇到問題,如變數值的改變;
4.assert和後面的語句應空一行,以形成邏輯和視覺上的一致感。
5.有的地方,assert不能代替條件過濾。
assert是用來避免顯而易見的錯誤的,而不是處理異常的。
錯誤和異常是不一樣的,錯誤是不應該出現的,異常是不可避免的。c語言異常可以通過條件判斷來處理。
乙個非常簡單的使用assert的規律就是,在方法或者函式的最開始使用.
如果在方法的中間使用則需要慎重考慮是否是應該的,方法的最開始還沒開始乙個功能過程,
在乙個功能過程執行中出現的問題幾乎都是異常。
示例:
#include
//#define ndebug
#include
using namespace std;
template
double devide(t a,t b)
int main()
結果:
assertion failed
會指明**位置
斷言assert總結
0.python的assert是用來檢查乙個條件,如果它為真,就不做任何事。如果它為假,則會丟擲asserterror並且包含錯誤資訊。assert語句是一種插入除錯斷點到程式的一種便捷的方式。1.使用斷言可以建立更穩定,品質更好且不易於出錯的 當需要在乙個值為false時中斷當前操作的話,可以使用...
assert(斷言)用法
斷言語句是將除錯斷言插入到程式中的一種方便方法。1.用法 assert condition讓程式來測試condition,如果condition為false就會生成乙個assertionerror。相當於 if not condition raise assertionerror 2.示例 asse...
斷言(assert) 學習
在我學習程式設計時,我一直認為斷言 assert 是個報錯函式,事實上,它居然是個巨集,並且作用並非 報錯 在經過對其進行一定了解之後,對其作用及用法有了一定的了解,斷言assert是定義在assert.h中的 巨集 只在debug版本起作用,而在release版本不起作用。用法 assert 表示...