This confused me because I was using an unsigned character type which means that I should have the values 0 - 255 to use instead of using the first bit as the sign bit. No matter what I did it always either failed or told me it would fail. Is there a reason for this?

Thank you!

note: I made this work by using a signed variable and checking if it was less than zero because any value that was greater than 128 up to 255 will have to have that bit set to one which would make an 8 bit 2's compliment number negative. But it is still very strange that it would not recognize the unsigned char values greater than 127...

It appears the compiler is being very nice to you to alert you on the problem with the limited range of your assigned char type. If token is ever assigned anything above 127, it would be undifined behaviour, alter your conditional to 'token <= 127', that would remove that gcc error.