[英]Can I rely on sizeof(uint32_t) == 4?
我知道我可以依靠sizeof(char) == 1
,但是sizeof(uint32_t)
和sizeof(uint8_t)
呢? 从名称猜测它是否应该是32位(8位)大小? 谢谢!
固定大小的类型将始终与该大小完全相同。 如果您使用的怪异平台没有该大小的整数类型,那么它们将是未定义的。
请注意,如果CHAR_BIT != 8
,则不一定遵循sizeof(uint32_t) == 4
情况; 同样,这仅发生在怪异的平台上。
绝对不是,至少就sizeof(uint32_t)
。 sizeof
返回字节数,而不是位数,如果平台上的字节为16位,则sizeof(uint32_t)
将为2,而不是4; 如果字节为32位(并且实际上存在此类平台),则sizeof(uint32_t)
将为1(而uint32_t
可以是对unsigned char
的typedef)。
当然,在这种情况下,不会定义uint8_t
。
不,它完全取决于您的编译器和体系结构( 即,如果您没有整数类型,它将给出不同的结果 )。 如果您得到CHAR_BIT == 8
那么可以的。 因此,如果您使用的是64位架构,则将与64位边界对齐,就像使用32位架构一样,所有内容都将对齐4个字节。
因此,如果数据大小至关重要(例如,一组位标志),请始终使用固定大小的类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.