Promotion of integral types

Chris Thomson cmt at myrias.UUCP
Tue Sep 23 18:35:37 AEST 1986

In article <3422 at umcp-cs.UUCP> Chris Torek writes:

> 	Storage Type		Expression Equivalent
> 	------------		---------------------
> 	char			int
> 	unsigned char		unsigned int
> 	short			int
> 	unsigned short		unsigned int
> 	int			int
> 	unsigned int		unsigned int
> 	long			long
> 	unsigned long		unsigned long
> 	float			double
> 	double			double
> 	pointer			pointer

It is interesting to note that K&R does not say that unsigned char or
unsigned short get promoted to unsigned int; it says that they get promoted
to integer (on page 183), which is a bit vague.  Harbison & Steele says
very clearly what is said above.  The ANSI Draft (1986.07.09 version) says
very clearly that unsigned char and unsigned short are promoted to int,
since the values can all be represented in an int (assuming sizeof(int)
is greater than sizeof(short), which is usually true).

What to do?  Frankly, I prefer the ANSI approach, but it does represent a
silent change from what H&S (and Chris Torek) perceive to be standard
practice.  For some reason, it is not flagged as such in the rationale
document; it isn't even discussed there.
Chris Thomson, Myrias Research Corporation	   alberta!myrias!cmt
200 10328 81 Ave, Edmonton Alberta, Canada	   403-432-1616

More information about the Comp.lang.c mailing list