f(b,c)1f (b, c) 2 unsigned char *b; 3 int c; 4 { 5 unsigned long v = 0; 6 switch (c) 7 { 8 case 'd': 9 v = ((unsigned long)b[0] << 8) + b[1]; 10 v >>= 9; 11 break; 12 13 case 'k': 14 v = b[3] >> 4; 15 break; 16 17 default: 18 abort (); 19 } 20 21 return v; 22 } main()23main () 24 { 25 char buf[4]; 26 buf[0] = 170; buf[1] = 5; 27 if (f (buf, 'd') != 85) 28 abort (); 29 exit (0); 30 } 31