Re: [問卦] 幹!為什麼1是true,0是false?消失
※ 引述《HuangJC (吹笛牧童)》之銘言:
: 哥的第二篇肺文就在這裡好了
: 那時有 if .. then, 但並沒說 true 是 1
: 總之,我在 qbasic 下,記得是可把以 true false 變成數字了
: 但是,true 是 -1
: XDDDDDD
: 誰跟你說 true 一定是 1
: 在 C,可能會說,只要不是 0 就是 true
: ( 所以 true 和 false 的機率不一樣大啊~)
: 但在那個 basic (因為我不記得是不是 qbasic 了,所以就說得含糊點好了)
: 是認為,false 是 00000000 ,二進位
: true 是 11111111 , 二進位
: 全是 1,在 signed 數字系統裡,是 -1 沒錯
: (對了,在 unsigned 系統裡,它是 255,這很糟糕
: 但如果 true 是 -1, 那一切都會在你意料之外,對吧~
C 在 prepocessor 可以 #define TRUE <what number you like>
另外, TRUE/FALSE 值常跟 success/fail 的傳回值搞混
Python 2.x 你也可以修改 TRUE/FALSE 的預設值
: 記得在一本書,提到怎麼減少程式設計的 bug 裡有提到
: 不要寫這種程式,因為有風險,有可攜性的問題
C 真正的 portable 來自於它的 I/O & Math operator 與 compiler 分離,
這些操作透過呼叫 stdio.h、stdlib.h ...等在 link 時載入相關 libary 達成,
使得原始碼在不同 CPU、OS 上 cmopile 時
不會遇到因為 compiler 實作不同莫名其妙 gg 而查不出原因的狀況.
: ------
: java 不允許我這麼做
: java 的 true 就是 true, 不是 1,不能參與運算
: 這好像叫做強型別是吧?
不是,是因為
C 的 bool type 是 0&1, Java 的 bool type 是 true/fasle
值的內涵就不同
--
讀者審校網試行版
http://readerreviewnet.twbbs.org/
(哲、史、法、政、經、社,人文翻譯書籍錯譯提報網)
◎洪蘭"毀人不倦"舉報專區
http://tinyurl.com/z3t6qzf
→
05/28 01:33, , 1F
05/28 01:33, 1F
→
05/28 01:33, , 2F
05/28 01:33, 2F
→
05/28 01:34, , 3F
05/28 01:34, 3F
→
05/28 01:35, , 4F
05/28 01:35, 4F
推
05/28 01:41, , 5F
05/28 01:41, 5F
※ 編輯: freeunixer (60.250.90.238), 05/28/2017 01:45:27
噓
05/28 03:38, , 6F
05/28 03:38, 6F
→
05/28 03:38, , 7F
05/28 03:38, 7F
→
05/28 03:39, , 8F
05/28 03:39, 8F
→
05/28 09:13, , 9F
05/28 09:13, 9F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 11 篇):