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