繁体   English   中英

我可以依靠sizeof(uint32_t)== 4吗?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM