Defect Report #067
Submission Date: 03 Dec 93
Submittor: WG14
Source: Clive Feather
Question
Item 4 - definitions of types
The terms ``signed integer type,'' ``unsigned integer type,''
and ``integral type'' are defined in subclause 6.1.2.5. The
C Standard also uses the terms ``integer type,'' ``signed
integral type,'' and ``unsigned integral type'' without defining
them. Integer-valued bitfields are also introduced in subclause 6.5.2.
- For each of the following types, which if any of the six categories
above do they belong to?
char
signed char
unsigned char
signed short
unsigned short
signed int
unsigned int
signed long
unsigned long
int : N /* i.e. bitfield of size N /*
signed int : N
unsigned int : N
enumerated type
- For each of these categories, do the const and/or volatile
qualified versions of the types belonging to the category also belong
to the category?
- Can an implementation extension add other types defined by the
C Standard to any of these six categories?
- Can an implementation define other types (e.g. __very long)
which belong to any of these six categories?
- If the answer to (c) or (d), or both, is yes, can size_t
and ptrdiff_t be one of these other types, or must it be a type
in the above list?
Response
a) ``Signed integer type'', ``unsigned integer type'',
and plain ``integer type'' are used interchangeably with ``signed
integral type'', ``unsigned integral type'', and ``integral
type'' in the C Standard. This observation makes it easy to categorize
the types in your list.
b) Yes, see subclause 6.1.2.5.
c) No, the list in the C Standard is meant to be exhaustive. For example,
float cannot be defined as an integer type.
d) No strictly conforming program could contain an instance of such
a type. The treatment of such types is beyond the scope of the C Standard.
e) No, it must be a type in the list. For example, size_t cannot
be defined as unsigned __int24.
Previous Defect Report
< - >
Next Defect Report