Println deals with the data types unsigned char and byte incorrectly. Reporting negative one, instead of 255, in the example below.
Unsigned ints, which I thought might exhibit the same behavior, seem to work fine though.
It has to do with doing the math inside the println parenthesis.
unsigned char j;
void setup() {
Serial.begin(9600);
}
void loop(){
j= 0;
Serial.println((j-1), DEC);
}