Re: [問卦] 幹!為什麼1是true,0是false?

作者: HuangJC (吹笛牧童)   2017-05-28 01:14:34
哥的第二篇肺文就在這裡好了
想當年,我最先學的是 Apple II 的 basic
的山寨,小教授二號
那時有 if .. then, 但並沒說 true 是 1
b = 1;
a = (b == 1);
這樣的式子,在 basic 不存在
但後來學了 c, 再學了 16 位元下的 qbasic
(為什麼要回頭學?因為自修,再加上同學問問題的順序
還有老師上課教什麼.. 反正就變成要回頭學了)
喔,我有學長把 c 寫得很像 pascal
也有學長把 pascal 寫得很像 c
XDDDDD
C 有函式,一次取代了函數與算式
那個學長就只用函數,當不想有傳回值時,就隨便用個變數去接
大概是這樣,詳細我忘了
總之,我在 qbasic 下,記得是可以把 true false 變成數字了
但是,true 是 -1
XDDDDDD
誰跟你說 true 一定是 1
在 C,可能會說,只要不是 0 就是 true
( 所以 true 和 false 的機率不一樣大啊~)
但在那個 basic (因為我不記得是不是 qbasic 了,所以就說得含糊點好了)
是認為,false 是 00000000 ,二進位
true 是 11111111 , 二進位
全是 1,在 signed 數字系統裡,是 -1 沒錯
(對了,在 unsigned 系統裡,它是 255,這很糟糕
在意識到用二進位去解釋它之前,我完全覺得這是個亂數,來亂的)
嗯,所以就是 -1 了
因為這樣還引起我不少 bug
因為那時,我已經習慣 true 是 1 並且加以計算了
比如
a = 3 + (b == 2) + (c == 3) * 5;
把布林值看成數字並參與計算,可以在一個算式裡完成很多事
但如果 true 是 -1, 那一切都會在你意料之外,對吧~
記得在一本書,提到怎麼減少程式設計的 bug 裡有提到
不要寫這種程式,因為有風險,有可攜性的問題
作者: stayawesome (stayawesome)   2017-05-28 01:15:00
趕快推 不然人家以為我看不懂
作者: ANiZan9991 (門務司)   2017-05-28 01:15:00
5樓看不懂,哈哈哈
作者: luckyalbert (幸運知音)   2017-05-28 01:15:00
你貼錯版,這裡的沒聰明到看的懂JAVA
作者: willywu0626 (芝麻街街友)   2017-05-28 01:16:00
五樓看不懂
作者: kuromu (kuromu)   2017-05-28 01:16:00
.
作者: ddcg (絕☆頂★升☆天)   2017-05-28 01:16:00
非0則true
作者: luckyalbert (幸運知音)   2017-05-28 01:16:00
以前學過basic但我現在看不懂惹
作者: yzkeroro (小製)(′˙ω˙‵)   2017-05-28 01:16:00
你在認真甚麼啦
作者: octangus07 (安)   2017-05-28 01:18:00
認真推XD
作者: lolic (lolic)   2017-05-28 01:18:00
你有點寫錯 數學老師沒教過兩個等號八 ==
作者: luckyalbert (幸運知音)   2017-05-28 01:19:00
因為這不是數學啊...應該說是語言的ㄧ種
作者: lolic (lolic)   2017-05-28 01:22:00
...抱歉 開玩笑的
作者: sarsman (DeNT15T♠)   2017-05-28 01:22:00
感覺lolic是反串
作者: pig250907 (pig250907)   2017-05-28 01:23:00
認真給推= =
作者: luckyalbert (幸運知音)   2017-05-28 01:24:00
我那本課本還在xD
作者: pro1028 (丸丸)   2017-05-28 01:26:00
==
作者: m21423 (WSH)   2017-05-28 01:28:00
= =
作者: frank3302 (水鬼)   2017-05-28 01:32:00
蛤 原來bool可以參與運算哦
作者: smhead   2017-05-28 01:33:00
阿就語法不同定義不同,有啥好探討的
作者: opthr1215 (天天)   2017-05-28 01:35:00
@frank3302 那個bool的參與可以想成true/false參與運算
作者: gg7965977 (吸血鬼的茶包)   2017-05-28 01:36:00
嗯嗯 跟我想法差不多
作者: opthr1215 (天天)   2017-05-28 01:36:00
(1==3)就是false,(2==2)就是true,類似這樣。所以如果true/false可以有數值,他的值就能參與運算。
作者: lucifiel1618 (Lucifiel)   2017-05-28 01:38:00
所以到底是什麼翻出來
作者: rwhung (畫一隻雞)   2017-05-28 01:43:00
true/false, 1/0 . 確實不太同
作者: dazax0749 (打雜克斯)   2017-05-28 01:50:00
都21世紀了 還有人==中間不加空格
作者: formatted (ゴミ丼 わがんりんにゃれ)   2017-05-28 02:05:00
機率不同。亂數就不會true and false 的問題
作者: t81511270 (justlikeING)   2017-05-28 02:09:00
推個 的確不同
作者: tyr2004 (卡螺絲)   2017-05-28 02:35:00
作者: VincentKung (Vincent)   2017-05-28 03:05:00
規則就是這樣不喜歡就轉行啊別逼自己做不喜歡的事

Links booklink

Contact Us: admin [ a t ] ucptt.com