The serial getchar will only modify the LSB of ch, the MSB 3 bytes will be unchanged as the random value on stack, so if MSB 3 bytes not zero, the value got is wrong.