If a char is to be defined as number from 0 to 255 that and its storage space is exactly 1 byte - that is correct. But it is rather a legacy nowadays. No one should use it.
I think you miss the point. A byte is always 8 bits, and therefore contains unsigned numbers 0 to 255 inclusive. A char is always defined to be the base size of the machine. By definition, therefore, sizeof(char) is always 1. However, a char is not always 1 byte. On some machines a char can hold the values 0..511, and on others 0..65535. (for example)
The other reply to my comment (http://news.ycombinator.com/item?id=1666345) gets this right.
Again, apologies.