回覆列表
  • 1 # 散居獵人

    約定而已。數值0對應邏輯False。

    相應彙編指令,JZ xxxx。累加器或Z標誌位為零跳轉到xxxx。

    這樣約定,C編譯器產生機器碼很方便。

  • 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正在舉辦註解核心贏工具活動,你對核心的理解可以傳遞給他人。

  • 中秋節和大豐收的關聯?
  • 如何提高玩風暴英雄的技術?