I have a bit of C code, which goes exactly like this:
short int fun16(void){
short int a = 2;
short int b = 2;
return a+b;
}
Wh
When you do arithmetic computations, the operands are subject to "the usual arithmetic conversions" (a superset of the "integer promotions" quoted in Acme's answer—he beat me to this but I'll go ahead and post anyway :-) ). These widen short int
to plain int
, so:
a + b
computes the same result as:
((int) a) + ((int) b)
The return
statement must then narrow this int
to a short int
, and this is where gcc produces the warning.