TRUE == -1 in BASIC (Re: こんなコード書く?)
yagshi@ohshe.bs.teu.ac.jp (KOBAYASHI Hiroyuki) writes:
> >> > # TRUE が 1 の BASIC もありました。
> >>
> >> あ、両方あったのでビビるんです。
> >>
> >> -1だったのは整数と論理演算をする時に算術演算とおなじでよい実装だったの
> >> でしょうね。
>
> あー、確かに。そのまま論理演算して0比較すれば良いわけですね。
> そう考えると昔はもっといろいろな(貧弱な環境ようの)言語で真が
> -1 のものがあっても良さそうなものですが、どうなんでしょう。
>
> # ぼくは BASIC くらいしか知りません。
MS-BASICでは、AND, OR, NOTの各演算子が、論理値の演算とビット演算を兼ね
てたんですよね。特にNOTがただのビット反転だったので、TRUEが-1 になった
のだと思います。(Cの!に相当するものがあれば、TRUEは1にできたはず。)
Pascalだと規格でfalse < trueとされていたので、
var p, q: boolean;
...
for p := false to true do
...
Pascal User's Manual and Reportには「pならばq」という命題は p <= q
と書けるとあって面白かった覚えが。
MS-BASICだと、
FOR P=TRUE TO FALSE: ... :NEXT
# fj.comp.lang.c の話題じゃないか…
前田敦司
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735