example 11-2:
page 177:
the question:

the HIGH_SPEED flag works, but the DIRECT_CONNECT flag does not. Why?

I could see when i was typing it that you cant shift by more than 7 bits, and quite rightly expected the program to output:

High speed set

But for some reason i get:

guyattc2-practical_c3-> high
High speed set
Direct connect set

Can anyone tell me if ive copied it wrong or if there is an error. id like to know why my program works (bet thats a new one )

Code:
#include <stdio.h>

const int HIGH_SPEED = (1<<7); /* modem is running fast */

/* we are using a hardwired connection */
const int DIRECT_CONNECT = (1<<8);

char flags = 0; /* start with nothing */

int main()
{

  flags |= HIGH_SPEED; /* we are running fast */
  flags |= DIRECT_CONNECT; /*beacuse we are wired together */

  if((flags & HIGH_SPEED) != 0)
  {

    printf("High speed set\n");
  }

  if((flags & DIRECT_CONNECT) != 0)
  {

    printf("Direct connect set\n");
  }

  return(0);
}
Any help much appreciated, thanks.

--CHriS