if與assert的區別

2021-09-12 02:46:50 字數 656 閱讀 7850

斷言(assert)的語義:

如果表示式的值為0(假),則輸出錯誤訊息並終止程式的執行(一般還會出現提示對話方塊,說明在什麼地方引發了assert;如果表示式為真,則不進行任何操作,因此斷言失敗就表明程式存在乙個bug。

使用assert的目的是捕捉執行時不應該發生的非法情況

語義:

如果表示式的值為真,則執行其後 的語句,否則不執行該語句,語句可以是單條語句,也可以是花括號{}包括起來的復合語句。

使用if語句的目的是對於條件判斷,滿足條件則執行其後的語句,不滿足,則不執行其後的語句。

1.assert語句僅僅在debug版本中才有效,在release版本中無效; if(null!=p)在relsease版本中檢驗指標的有效性

2.assert一般用於檢查函式引數的合法性(有效性)而不是正確性,但是合法的程式不一定就是正確的程式

3.if語句,簡單的說就是「漏斗「,滿足條件的就進入(這就是接下來的程式),不滿足就阻止進入(程式中斷)

4.assert這個巨集只是幫助我們除錯**,作用:讓使用者在除錯函式時把錯誤除掉,而不是等待release之後,assert可以幫助我們定位錯誤,而不是排除錯誤

一般用於檢查函式參加的合法性(有效性)而不是正確性,但是合法的程式就不見得是正確的程式。

ASSERT與VERIFY巨集的區別

1 assert與verify巨集在debug模式下作用基本一致,二者都對表示式的值進行計算,如果值為非0,則什麼事也不做 如果值為0,則輸出診斷資訊。2 assert與verify巨集在release模式下效果完全不一樣。assert不計算表示式的值,也不會輸出診斷資訊 verify計算表示式的值...

ASSERT與VERIFY巨集的區別

今天公司有同事問我assert與verify巨集有什麼區別,雖然平時常用這兩個巨集對一些變數在debug模式下作判斷,但一時還真答不上來二者之間的具體差別,看來只是知其然不知其所以然。後來查了一些資料,總算弄清楚了二者之間的區別,整理後與同事交流了一番,感覺收穫還是蠻大的。下面對我的理解進行了總結 ...

ASSERT和VERIFY的區別

assert和verify的區別 1 assert與verify巨集在debug模式下作用基本一致,二者都對表示式的值進行計算,如果值為非0,則什麼事也不做 如果值為0,則輸出診斷資訊。2 assert與verify巨集在release模式下效果完全不一樣。assert不計算表示式的值,也不會輸出診...