【发布时间】:2012-08-05 18:44:44
【问题描述】:
简单地放入 C 和变体(不像 wuss java 和它的虚拟机),不同目标上的原始类型的大小可能会有很大差异,除非你使用 stdint.h 中定义的固定宽度类型,否则真的无法保证,即便如此,您的实现也必须支持它们。
无论如何假设(因为在大多数现代机器上,一个字节是一个八位字节,出于网络目的,我假设(ASCII)) sizeof 是否以字节或八位字节为单位返回数据类型的大小?
【问题讨论】:
-
字节,但单个字节(表示为
char)有CHAR_BITS位。如果您想要T中的八位字节数,请执行sizeof(T) * CHAR_BITS / 8。在大多数平台上,CHAR_BITS是8。 -
@GManNickG
CHAR_BIT(没有S):) -
float octetPercent = sizeof(T) * CHAR_BIT /8.0;
-
请注意,POSIX 和 Windows(即基本上 99.999% 的非 DSP 系统)都需要一个字节作为八位字节,这个问题主要是出于学究/语言律师的目的。
-
你明白了,这就是它说假设的原因。