assert
斷言(assert)的語義:
如果表達(dá)式的值為0(假)遣臼,則輸出錯誤消息并終止程序的執(zhí)行(一般還會出現(xiàn)提示對話框珊搀,說明在什么地方引發(fā)了assert;如果表達(dá)式為真,則不進(jìn)行任何操作,因此斷言失敗就表明程序存在一個(gè)bug朗恳。
使用assert的目的是捕捉運(yùn)行時(shí)不應(yīng)該發(fā)生的非法情況
if
語義:
如果表達(dá)式的值為真,則執(zhí)行其后 的語句跌帐,否則不執(zhí)行該語句,語句可以是單條語句,也可以是花括號{}包括起來的復(fù)合語句。
使用if語句的目的是對于條件判斷,滿足條件則執(zhí)行其后的語句鹦马,不滿足荸频,則不執(zhí)行其后的語句旭从。
區(qū)別
1.assert語句僅僅在debug版本中才有效,在release版本中無效鸽素; if(NULL!=p)在Relsease版本中檢驗(yàn)指針的有效性
2.assert一般用于檢查函數(shù)參數(shù)的合法性(有效性)而不是正確性馍忽,但是合法的程序不一定就是正確的程序
3.if語句遭笋,簡單的說就是“漏斗“瓦呼,滿足條件的就進(jìn)入(這就是接下來的程序)央串,不滿足就阻止進(jìn)入(程序中斷)
4.assert這個(gè)宏只是幫助我們調(diào)試代碼质和,作用:讓用戶在調(diào)試函數(shù)時(shí)把錯誤除掉秩命,而不是等待release之后,assert可以幫助我們定位錯誤袄友,而不是排除錯誤
一般用于檢查函數(shù)參加的合法性(有效性)而不是正確性支竹,但是合法的程序就不見得是正確的程序礼搁。