標題: 此文章來自奇摩知識+如有不便請留言告知
一小段C程設
發問:
#include
最佳解答:
板大可以在程式當中加入 printf("%d
", num3>num2); printf("%d
", num3
我記得Dennis Richie 有跟我說過 為了避免 有人寫 ((a==b) == (c==d))而產生困擾 他提議了: == 1 false == 0 我還沒看過 編譯器的實做 設定 不是 1 的過 2015-05-15 07:07:50 補充: 我想UFO誤會我的意思. 我是說所有的 邏輯操作員 == != > >= ... 等等 都會保證回 {0,1} 連 !0都是一樣 只有醬,才可以保證 (a>b) == (c>d) 的正確 所以: if (a==b) ++c; 也有人寫成 c+=(a==b);|||||1. 這程式碼最後的輸出結果不一定是 "no",事實上會依據編譯器的實做而可能會是 "yes"。雖說大部分的編譯器幾乎都會執行為 "no" 的結果,但我們仍稱這個結果為 "不可預期的"。 2. 你這樣寫,編譯器都沒有抱怨一下嗎? 2015-05-13 01:55:28 補充: 不要教壞小朋友! num3>num2的執行結果是true,但不一定是1,實際上看編譯器的實做。 2015-05-13 13:01:40 補充: 這是一種習慣。 有很多C函式會把指標當作布林值傳回(可能是效率考量吧),這時候用 func() == true 的寫法會出問題的! 所以預設 true 為某個值、或是 true 和 true 一定相等的想法會要命。 2015-05-14 17:10:08 補充: C語言從前沒有Boolean型態(C11才加入),他規定所有可以被轉化成整數的東西都可為邏輯值,並定義零為False;非零為True。 C語言一直到C11以前也沒有true和false這兩個東西,這通常是由各家編譯器自己做出來的,而且通常會定義true為1。所以「通常true即為1」的說法是正確的,但「true一定為1」的說法就有問題了! MSDN上的東西僅能當作Visual C++的行為參考,不一定能套用到其他編譯器,或C語言的標準行為。D4CDE60C03A2F1BC
公告版位
- Apr 09 Sun 2017 12:07
點擊百科全書 (7995)
close
文章標籤
全站熱搜
留言列表
發表留言