Sujet : Re: basic BASIC question
De : arne (at) *nospam* vajhoej.dk (Arne Vajhøj)
Groupes : comp.os.vmsDate : 02. Feb 2025, 01:04:43
Autres entêtes
Organisation : SunSITE.dk - Supporting Open source
Message-ID : <679eb699$0$708$14726298@news.sunsite.dk>
References : 1 2 3 4 5 6 7 8 9
User-Agent : Mozilla Thunderbird
On 2/1/2025 6:38 PM, Craig A. Berry wrote:
On 2/1/25 3:00 PM, Arne Vajhøj wrote:
(in case someone wonder about C bool, then it is 8 bit!)
I don't think it has to be. C99 says:
"An object declared as type _Bool is large enough to store the values 0
and 1."
8 bits are enough, but any integral type has enough bits. "bool,"
"true," and "false" in stdbool.h are macros that can be overridden,
although doing so is described as "obsolescent" behavior. It's probably
necessary because of the uses of bool before the standard had it.
I'm pretty sure I've seen bool defined as an int on VMS, but whether
that was something VAX C did for you or was just some what some program
did in the absence of anything available from the (old) compiler I don't
remember.
The C standard does not mandate 8 bit.
The VMS C documentation says 8 bit. Well - it says 1 byte
for whatever reason, but ...
<quote>
3.2. Integral Types
In C, an integral type can declare:
Integer values, signed or unsigned
Boolean values, where 0 is equivalent to false and any nonzero number is equivalent to true
Characters, which are automatically converted to an integer value by the compiler
Members of an enumerated type, which are interpreted as an integer by the compiler
Bit fields
The integral types are:
char, signed char, unsigned char – 8 bits
short int, signed short int, and unsigned short int – 16 bits
_Bool – 1 byte
int, signed int, unsigned int – 32 bits
long int, signed long int, and unsigned long int – 32 bits
signed long long int and unsigned long long int – 64 bits
signed __int64 and unsigned __int64 – 64 bits
enum – 32 bits
</quote>
If one include stdbool.h then bool is _Bool. From C 99.
Before C 99 then I think:
typedef int bool;
#define TRUE 1
#define FALSE 0
was common.
(stdbool.h also defines true and false)
Arne