Deutsch English Français Italiano |
<vnjhfb$gk1$1@reader2.panix.com> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!panix!.POSTED.spitfire.i.gajendra.net!not-for-mail From: cross@spitfire.i.gajendra.net (Dan Cross) Newsgroups: comp.os.vms Subject: Re: basic BASIC question Date: Fri, 31 Jan 2025 22:05:31 -0000 (UTC) Organization: PANIX Public Access Internet and UNIX, NYC Message-ID: <vnjhfb$gk1$1@reader2.panix.com> References: <vnipj8$3i2i9$1@dont-email.me> <679d001e$0$713$14726298@news.sunsite.dk> <vnj81l$ga7$4@reader2.panix.com> <679d26bd$0$713$14726298@news.sunsite.dk> Injection-Date: Fri, 31 Jan 2025 22:05:31 -0000 (UTC) Injection-Info: reader2.panix.com; posting-host="spitfire.i.gajendra.net:166.84.136.80"; logging-data="17025"; mail-complaints-to="abuse@panix.com" X-Newsreader: trn 4.0-test77 (Sep 1, 2010) Originator: cross@spitfire.i.gajendra.net (Dan Cross) Bytes: 2721 Lines: 53 In article <679d26bd$0$713$14726298@news.sunsite.dk>, Arne Vajhøj <arne@vajhoej.dk> wrote: >On 1/31/2025 2:24 PM, Dan Cross wrote: >> In article <679d001e$0$713$14726298@news.sunsite.dk>, >> Arne Vajhøj <arne@vajhoej.dk> wrote: >>> On 1/31/2025 11:39 AM, Dave Froble wrote: >>>> On 1/31/2025 10:18 AM, Arne Vajhøj wrote: >>>>> Is it common to use: >>>>> >>>>> declare integer constant TRUE = -1 >>>>> declare integer constant FALSE = 0 >>>>> >>>>> >>>>> ? >>>> >>>> It works. Doesn't really matter if declared a constant. Zero is false, >>>> anything else is true. Using 1 vs -1 has been more my experience. >>> >>> I got the impression that the manual/compiler prefer -1 over 1. >>> >>> print not 0% >>> >>> does print -1. >> >> This sort of makes some sense when one considers the bit >> representation of `-1` on a 2s complement machine (all bits 1). > >True. > >But there is no consistency between languages. > >$ type dump.for > [snip] I don't know why this should be surprising? For Pascal, the integer values of `true` and `false` are given in the standards documents (from e.g., ISO/IEC 7185:1990(E) sec 6.4.2.2. para (c): "The ordinal numbers of the truth values denoted by *false* and *true* shall be the integer values 0 and 1 respectively." In C, the relevant standards and most historical compilers treat 0 as false and anything non-zero as true and the negation operator turns 0 into a 1 (I'm not sure how far back this goes). Treating -1 as true in BASIC seems rather common, from the quick survey I did; I speculate that this is almost certainly due to the bit representation of -1 having all bits set, while in BASIC the integer type is (usually?) signed, thus -1 on a two's complement machine. I wonder what the original DTSS BASIC did? - Dan C.