為什麼C語言中計算機認為0是假的,其他數都是真的?程式設計師黃老師2020-08-11 11:58:15

嗯,因為0是假,非0是真,這樣比較好判斷的!

為什麼C語言中計算機認為0是假的,其他數都是真的?BWanger軟體開發達人2020-07-09 18:18:05

C是一門高效的計算機程式語言。所以,為了程式設計快捷方便的需要,對邏輯表示式及邏輯非運算子”!”進行了明確的定義,即表示式值為非零時,邏輯值為1,表示式值為0時,邏輯值為0。這就是你所說的計算機認為0是假的,非0是真的(原創問答,違者必究)。

以下分兩部分解釋:邏輯變數;表示式及邏輯非運算子”!”。

邏輯變數:

C語言中,邏輯變數為布林型變數BOOL,一般只返回兩個值,一個是1 ,一個是0,IDE系統宏定義如下:

#define FALSE 0

#define TRUE 1

在程式設計中,不論什麼情況,在進行邏輯判斷時,不是TRUE,就是FALSE。

也就是說,不論怎麼複雜的邏輯關係式,其運算結果要麼是TRUE,要麼是FALSE。

表示式及邏輯非運算子”!”

先看一下權威的MSDN是如何定義邏輯非運算子”!”的,原文截圖如下:

為什麼C語言中計算機認為0是假的,其他數都是真的?

重點翻譯白話文如下:

運算元d是非零時,!d返回值是0;運算元d是零時,!d返回值是1;其中的運算元d是整數型、浮點型或指標型之一。

同樣,對if語句的表示式也有相似的表述:表示式返回值是非零(nonzero)時,if的結果是真。否則,if的結果是0

很清楚了吧!

舉例1:布林型!,表示式判斷

如下圖,函式IsEmpty()為BOOL,取!,很顯然。

為什麼C語言中計算機認為0是假的,其他數都是真的?

舉例2,整數型nNum取!,nNum≠0,那麼!nNum值為0,否則!nNum值為1。

為什麼C語言中計算機認為0是假的,其他數都是真的?

總結:一定要明白,只在關係(邏輯)運算時才是你說的那樣。在算術運算時,還是返回實際計算結果。

為什麼C語言中計算機認為0是假的,其他數都是真的?磚頭bricktou2020-07-11 11:48:34

最初的定義,然後是延續使用。今天看:0唯一,表示成功更好,非0表示警告或錯誤。

程式邏輯抽取器支援c/c++/esqlc,資料庫支援oracle/informix/mysql,讓你輕鬆瞭解程式幹了什麼。

本站bricktou。cn正在舉辦註解核心贏工具活動,你對核心的理解可以傳遞給他人。

為什麼C語言中計算機認為0是假的,其他數都是真的?麥克老牛2020-07-10 19:33:11

c語言本就沒有真假值也沒有布林變數。標準庫裡沒有bool定義。都是自己定義。一般是定義個列舉變數

enum bool {FALSE;TRUE=!FALSE};

如果FALSE=1就是1為假其他為真。

為什麼C語言中計算機認為0是假的,其他數都是真的?火山口2020-07-16 17:26:49

首先你要搞清楚邏輯運算和算術運算的區別。

在邏輯運算裡,只有真和假兩個選項,要麼真要麼假,沒有第三種選擇。

只有算術運算中,才有不同數值的概念。

至於為什麼把數值0定義為假,其他數值定義為真。這就是個定義問題,設定的規則如此,你非要鑽牛角尖,人家頂多來個我樂意,你就沒話說了。當然,你也可以自己定義真假,比如>5為真,≤5為假,說穿了這也是個你樂意的事,沒有什麼理由不理由的。

或許他們認為0就是無,其他數可以歸納成有,以此而來的規則,總之這沒啥意義。

if(i)x=y;

if(i>5)x=y;

if(i<=5)x=y;

這些都可以,你開心就好。。。

為什麼C語言中計算機認為0是假的,其他數都是真的?學好玩2020-07-10 07:33:46

c語言本來沒有什麼真假,只不過有人define定義0為假而已。如果把0定義為真,也無所謂。

為什麼C語言中計算機認為0是假的,其他數都是真的?散居獵人2020-07-06 08:09:11

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

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

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