1 extern void abort (void); 2 3 int main()4main () 5 { 6 int i, j; 7 unsigned long u, r1, r2; 8 9 i = -16; 10 j = 1; 11 u = i + j; 12 13 /* no sign extension upon shift */ 14 r1 = u >> 1; 15 /* sign extension upon shift, but there shouldn't be */ 16 r2 = ((unsigned long) (i + j)) >> 1; 17 18 if (r1 != r2) 19 abort (); 20 21 return 0; 22 } 23