> >_Bool is a notational convenience, maybe helping document functions > >returning only pass/fail status, or for the isalpha(2) family of > >functions. Charles Forsyth wrote: > no, since its type is different from that produced by the logical > and equality operators (eg, ! and ==) which are still int! > it's a unsigned integer type with a limited range (0 or 1), a special > conversion rule, and of course a peculiar name (not even _bool!). > pointless tinkering.
Actually we expect that _Bool will be used only via the typedef "bool" in <stdbool.h>. The reason for the spelling was to use an identifier that was within the namespace already reserved for C implementors, so as not to impact any existing code. Similarly for the complex type(s). Note also that _Imaginary is not required by C99. There was considerable debate about the utility (or not) of a purely imaginary type, in the end deciding that there was insufficient utility to require it. There are reasons behind all of the C standards committee's decisions. Often they reflect practical constraints such as wanting not to conflict with existing strictly-conforming code. If VS2005's wchar_t is truly not assignable then it doesn't conform to the C standard.