[Info-vax] basic BASIC question
Arne Vajhøj
arne at vajhoej.dk
Sat Feb 1 19:04:43 EST 2025
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
More information about the Info-vax
mailing list