回覆列表
-
1 # 散居獵人
-
2 # BWanger軟體開發達人
C是一門高效的計算機程式語言。所以,為了程式設計快捷方便的需要,對邏輯表示式及邏輯非運算子”!”進行了明確的定義,即表示式值為非零時,邏輯值為1,表示式值為0時,邏輯值為0。這就是你所說的計算機認為0是假的,非0是真的(原創問答,違者必究)。
以下分兩部分解釋:邏輯變數;表示式及邏輯非運算子”!”。
邏輯變數:C語言中,邏輯變數為布林型變數BOOL,一般只返回兩個值,一個是1 ,一個是0,IDE系統宏定義如下:#define FALSE 0
#define TRUE 1
在程式設計中,不論什麼情況,在進行邏輯判斷時,不是TRUE,就是FALSE。
也就是說,不論怎麼複雜的邏輯關係式,其運算結果要麼是TRUE,要麼是FALSE。
表示式及邏輯非運算子”!”先看一下權威的MSDN是如何定義邏輯非運算子”!”的,原文截圖如下:
重點翻譯白話文如下:
運算元d是非零時,!d返回值是0;運算元d是零時,!d返回值是1;其中的運算元d是整數型、浮點型或指標型之一。
同樣,對if語句的表示式也有相似的表述:表示式返回值是非零(nonzero)時,if的結果是真。否則,if的結果是0很清楚了吧!
舉例1:布林型!,表示式判斷
如下圖,函式IsEmpty()為BOOL,取!,很顯然。
舉例2,整數型nNum取!,nNum≠0,那麼!nNum值為0,否則!nNum值為1。
總結:一定要明白,只在關係(邏輯)運算時才是你說的那樣。在算術運算時,還是返回實際計算結果。 -
3 # 磚頭bricktou
最初的定義,然後是延續使用。今天看:0唯一,表示成功更好,非0表示警告或錯誤。
程式邏輯抽取器支援c/c++/esqlc,資料庫支援oracle/informix/mysql,讓你輕鬆瞭解程式幹了什麼。
本站bricktou.cn正在舉辦註解核心贏工具活動,你對核心的理解可以傳遞給他人。
約定而已。數值0對應邏輯False。
相應彙編指令,JZ xxxx。累加器或Z標誌位為零跳轉到xxxx。
這樣約定,C編譯器產生機器碼很方便。