1  f (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  }
      23  main ()
      24  {
      25    char buf[4];
      26    buf[0] = 170; buf[1] = 5;
      27    if (f (buf, 'd') != 85)
      28      abort ();
      29    exit (0);
      30  }