C和C++标准是否允许数值类型的sizeof
不是二的幂?
已知以下限制:
16 <= CHAR_BIT * sizeof(int) <= CHAR_BIT * sizeof(long)
32 <= CHAR_BIT * sizeof(long) <= CHAR_BIT * sizeof(long long)
- 还有其他几个,在典型的8位字节架构上意味着
2 <= sizeof(int) && 4 <= sizeof(long)
这是否意味着sizeof(int) == 3 && sizeof(long) == 5
是有效的行为?
如果是,是否已知任何采用类似方式的编译器/体系结构?
sizeof(int) <= 4
这个限制从哪里来?在一个CHAR_BIT == 32
的架构中,我无法想象sizeof(int) == 1
会无效。 - Angew is no longer proud of SOCHAR_BIT * sizeof(int) <= 32
? - Angew is no longer proud of SOsizeof(int)==3
)。我曾经使用过的唯一架构是CHAR_BIT==24
和sizeof(int)==1
。 - Mike SeymourCHAR_BIT == 24
和sizeof(int) == sizeof(char)
,但最近我发现Motorola DSP5600x/3xx系列具有16位短整型和24位整型。如果以16位模式运行,它还具有32位长整型。 - phuclv