If "The integer promotions preserve value including sign." #include <stdio.h>
int main (void) {
unsigned short int a;
unsigned long long int b, c;
a = -1;
b = (a*a);
c = ((unsigned int)a*(unsigned int)a);
printf ("Why %llx != %llx ?\n", b, c);
return 0;
}
