comparison of two unsigned bytes strange behavior

yanivps:
Thanks for replay.
Look at my example please
They are all unsigned char:
unsigned char start = 253;
unsigned char mil = 253;
unsigned char period = 3;

and yet, comparison fails

You can't promote an unsigned long to an int, so arithmetic it automatically done as unsigned long.
This is not the case for an unsigned char.