是否有机器(或编译器)在哪里sizeof(char) != 1
?
C99标准是否说sizeof(char)
在标准合规性实施上必须完全为1?如果有,请给我编号和引用。
更新:
如果我有一台不能寻址字节的机器(CPU)(最小读取为4字节,对齐),但是只有4-s字节(uint32_t
),则该机器的编译器可以定义 sizeof(char)
为4吗?sizeof(char)
将为1,但char将具有32位(CHAR_BIT
宏)
Update2: 但是sizeof结果不是BYTES!它是CHAR的大小。char可以是2个字节,或者(可能是)7位?
更新3:
好的。所有机器都有sizeof(char) == 1
。但是什么机器CHAR_BIT > 8
呢?
char
(而不是wchar
)。即使标准说sizeof(char)
必须为1,我也不会依赖于这一假设。
sizeof(char)
始终为1,即使char是32位(在某些系统上也是如此)。C有很多有趣的疣。
sizeof(char) == sizeof(short) && sizeof(char) == sizeof(int)
在这些机器上,旧的Cray机器确实做到了;我不记得sizeof(int) == sizeof(long)
CHAR_BIT是32还是64;我希望它是32,我也认为sizeof(long) == 1
。 (您可以找到Cray C手册的参考,但不能在线访问。)