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