4 ms·
You can't assume char is one octet. It is one byte by definition. A byte is CHAR_BIT bits, where CHAR_BIT >= 8. (It's exactly 8 on most implementations; DSPs a
by _kst_ 3y ago
You can't assume char is one octet. It is one byte by definition.
A byte is CHAR_BIT bits, where CHAR_BIT >= 8. (It's exactly 8 on most implementations; DSPs are the most common exception).
short and int are both required to be at least 16 bits wide. It's possible for int to be 1 byte (sizeof (int) == 1), but only if CHAR_BIT >= 16.
- _kst_ 3y agoA clarification: You can certainly assume that char is 8 bits if you don't mind losing portability to a small minority of systems. If I'm being pedantic, I might add something like #if CHAR_BIT != 8 #error "This code assumes 8-bit char" #endif But realistically, if I'm using headers defined by either POSIX or Windows, that's probably enough of a guarantee. (Though I'd still use CHAR_BIT rather than 8 to refer to the number of bits in a byte.)
- gpderetta 3y agoposix indeed guarantees CHAR_BIT == 8.