Because the vast majority of standards (related to communication) out of ANSI and ISO talk in terms of octets (8-bit values). There is none of that wishy-washy variable-sized character nonsense :-)
And, since a rather large quantity of C code used char
or unsigned char
for storing and/or manipulating these values, and assumed they were 8 bits wide, the fact that ISO allowed a variable size would cause problems for that code.
Remember one of the over-riding goals of ISO C - existing code is important, existing implementations are not. This is one reason why limits.h
exists in the first place rather than just assuming specific values, because there was code around that assumed otherwise.
POSIX also followed that same guideline. By mandating a byte size of 8 bits, they prevented the breakage of a huge amount of code already in the real world.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…