chibicc/test/decl.c
Rui Ueyama 44bba965cb Add _Bool type
_Bool isn't just a 1-bit integer because when you convert a value
to bool, the result is 1 if the original value is non-zero. This
is contrary to the other small integral types, e.g. char, as you
can see below:

  char x  = 256; // x is 0
  _Bool y = 256; // y is 1
2020-12-07 12:00:05 +09:00

23 lines
541 B
C

#include "test.h"
int main() {
ASSERT(1, ({ char x; sizeof(x); }));
ASSERT(2, ({ short int x; sizeof(x); }));
ASSERT(2, ({ int short x; sizeof(x); }));
ASSERT(4, ({ int x; sizeof(x); }));
ASSERT(8, ({ long int x; sizeof(x); }));
ASSERT(8, ({ int long x; sizeof(x); }));
ASSERT(8, ({ long long x; sizeof(x); }));
ASSERT(0, ({ _Bool x=0; x; }));
ASSERT(1, ({ _Bool x=1; x; }));
ASSERT(1, ({ _Bool x=2; x; }));
ASSERT(1, (_Bool)1);
ASSERT(1, (_Bool)2);
ASSERT(0, (_Bool)(char)256);
printf("OK\n");
return 0;
}