All characters will fit your three stated cases, therefore the printf() is not even reachable. Try this. #define RMASK 0xc0 #define FMASK 0x80 switch (c & RMASK) { case RMASK : do1(); break; case FMASK : do2(); break; default : do3(); } Should work everywhere. Joe Wright