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

看板Gossiping作者時間8年前 (2017/05/28 01:14), 8年前編輯推噓29(29017)
留言46則, 35人參與, 最新討論串3/11 (看更多)
哥的第二篇肺文就在這裡好了 想當年,我最先學的是 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 裡有提到 不要寫這種程式,因為有風險,有可攜性的問題 ------ java 不允許我這麼做 java 的 true 就是 true, 不是 1,不能參與運算 這好像叫做強型別是吧? 不過可以這樣寫 a = 3 + ((b == 2) ? 1 : 0) + ((c == 3) ? 1 : 0) * 5; true 當成 1? 你得自己寫出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.136.126.34 ※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1495905277.A.E49.html

05/28 01:15, , 1F
趕快推 不然人家以為我看不懂
05/28 01:15, 1F

05/28 01:15, , 2F
5樓看不懂,哈哈哈
05/28 01:15, 2F

05/28 01:15, , 3F
你貼錯版,這裡的沒聰明到看的懂JAVA
05/28 01:15, 3F

05/28 01:16, , 4F
五樓看不懂
05/28 01:16, 4F

05/28 01:16, , 5F
.
05/28 01:16, 5F

05/28 01:16, , 6F
非0則true
05/28 01:16, 6F
※ 編輯: HuangJC (114.136.126.34), 05/28/2017 01:17:31

05/28 01:16, , 7F
以前學過basic但我現在看不懂惹
05/28 01:16, 7F

05/28 01:16, , 8F
你在認真甚麼啦
05/28 01:16, 8F
我看片片時,會認真看有沒有翻出來,你覺得我認不認真.. ※ 編輯: HuangJC (114.136.126.34), 05/28/2017 01:18:37

05/28 01:18, , 9F
認真推XD
05/28 01:18, 9F

05/28 01:18, , 10F
你有點寫錯 數學老師沒教過兩個等號八 ==
05/28 01:18, 10F
那不是數學啊,不過我看到三個大於還是小於時,又崩潰了一次... ※ 編輯: HuangJC (114.136.126.34), 05/28/2017 01:20:19

05/28 01:19, , 11F
因為這不是數學啊...
05/28 01:19, 11F

05/28 01:20, , 12F
應該說是語言的ㄧ種
05/28 01:20, 12F

05/28 01:22, , 13F
...抱歉 開玩笑的
05/28 01:22, 13F

05/28 01:22, , 14F
感覺lolic是反串
05/28 01:22, 14F

05/28 01:23, , 15F
認真給推= =
05/28 01:23, 15F

05/28 01:24, , 16F
我那本課本還在xD
05/28 01:24, 16F

05/28 01:26, , 17F
==
05/28 01:26, 17F

05/28 01:28, , 18F
= =
05/28 01:28, 18F

05/28 01:32, , 19F
蛤 原來bool可以參與運算哦
05/28 01:32, 19F

05/28 01:33, , 20F
阿就語法不同定義不同,有啥好探討的
05/28 01:33, 20F

05/28 01:35, , 21F
@frank3302 那個bool的參與可以想成true/false參與運算
05/28 01:35, 21F

05/28 01:36, , 22F
嗯嗯 跟我想法差不多
05/28 01:36, 22F

05/28 01:36, , 23F
(1==3)就是false,(2==2)就是true,類似這樣。
05/28 01:36, 23F

05/28 01:37, , 24F
所以如果true/false可以有數值,他的值就能參與運算。
05/28 01:37, 24F

05/28 01:38, , 25F
所以到底是什麼翻出來
05/28 01:38, 25F
x魚啊,都外翻的~

05/28 01:43, , 26F
true/false, 1/0 . 確實不太同
05/28 01:43, 26F

05/28 01:50, , 27F
都21世紀了 還有人==中間不加空格
05/28 01:50, 27F

05/28 02:05, , 28F
機率不同。亂數就不會true and false 的問題
05/28 02:05, 28F

05/28 02:09, , 29F
推個 的確不同
05/28 02:09, 29F

05/28 02:35, , 30F
05/28 02:35, 30F
※ 編輯: HuangJC (114.136.126.34), 05/28/2017 02:52:32 ※ 編輯: HuangJC (114.136.126.34), 05/28/2017 02:56:51

05/28 03:05, , 31F
規則就是這樣不喜歡就轉行啊別逼自己做不喜歡的事
05/28 03:05, 31F

05/28 04:36, , 32F
轉行又不是想轉就能轉,不然一堆肥宅都開心去當汁男了..
05/28 04:36, 32F

05/28 07:34, , 33F
我本來也是要這樣回。
05/28 07:34, 33F
你是說,我上一句,開心當汁男那句?:P

05/28 07:38, , 34F
小教授二號我也摸過 不過是拿來玩電動
05/28 07:38, 34F
※ 編輯: HuangJC (175.180.78.57), 05/28/2017 07:43:20

05/28 08:23, , 35F
C++ 的 conditional operator 反而比較常看到
05/28 08:23, 35F

05/28 08:24, , 36F
可以節省乘以0那項的計算
05/28 08:24, 36F

05/28 08:56, , 37F
這不就跟問男人叫男人女人叫女人一樣,您費心了
05/28 08:56, 37F

05/28 09:20, , 38F
長知識推
05/28 09:20, 38F

05/28 09:46, , 39F
到底是誰把ture跟false轉成數值的拉
05/28 09:46, 39F

05/28 10:42, , 40F
布林值為啥要拿去運算r
05/28 10:42, 40F

05/28 11:27, , 41F
拿布林值去運算可以直接把符合幾個條件算出來不用寫coun
05/28 11:27, 41F

05/28 11:27, , 42F
ter去數,我猜啦
05/28 11:27, 42F
a = 3 + (b == 2) + (c == 3) * 5; 這式子,在不支援 boolean 值運算的 basic 裡,你要怎麼寫? a=3; if ( b == 2 ) a = a + 1; if ( c == 3 ) a = a + 5; 要拆成這麼多行,你不覺得痛苦嗎? ※ 編輯: HuangJC (175.180.78.57), 05/28/2017 12:52:13

05/28 13:35, , 43F
拆多行不見得不好,可讀性高,看你怎麼取捨
05/28 13:35, 43F

05/28 15:58, , 44F
原句的可讀性很高了;聽說以前工程師計薪是以行數計價,
05/28 15:58, 44F

05/28 15:58, , 45F
這種才值得我取捨
05/28 15:58, 45F

05/29 19:18, , 46F
認真推
05/29 19:18, 46F
文章代碼(AID): #1PARFzv9 (Gossiping)
討論串 (同標題文章)
文章代碼(AID): #1PARFzv9 (Gossiping)