哥的第二篇肺文就在这里好了
想当年,我最先学的是 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 里有提到
不要写这种程式,因为有风险,有可携性的问题