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.