<P> C99 also added complex types: float _Complex, double _Complex, long double _Complex . </P> <P> C99 added a boolean (true / false) type _Bool . Additionally, the new <stdbool. h> header defines bool as a convenient alias for this type, and also provides macros for true and false . _Bool functions similarly to a normal integral type, with one exception: any assignments to a _Bool that are not 0 (false) are stored as 1 (true). This behavior exists to avoid integer overflows in implicit narrowing conversions . For example, in the following code: </P> <P> b evaluates to false if unsigned char is 8 bits wide . This is because 256 does not fit in the data type, which results in the lower 8 bits of it being used, resulting in a zero value . However, changing the type causes the previous code to behave normally: </P> <P> The C language specification includes the typedefs size_t and ptrdiff_t to represent memory - related quantities . Their size is defined according to the target processor's arithmetic capabilities, not the memory capabilities, such as available address space . Both of these types are defined in the <stddef. h> header (cstddef header in C++). </P>

Explain basic data types in c with example