从C标准来看,int至少有16位,long至少有32位,long至少有64位(有些平台可能不支持)。只是想知道标题中的句子是否总是正确的。
发布于 2009-08-06 16:45:19
不是的。该标准只定义了每种类型的最小范围。可以想象,int的范围可能是16位,但是填充了48位,使其变为64位(如果是CHAR_BITS == 8,则为8字节),而long是32位(4字节)。
当然,这将是愚蠢的。但这并不是被禁止的。
但是,请注意,根据定义,sizeof(char) == 1。所以sizeof(char) <= sizeof(任何其他的)。
发布于 2009-08-06 16:54:05
根据C Programming/Reference Tables的说法,特别是Table of Data Types
int≥16≥大小为short
整型的长≥32≥大小
long long≥64≥大小为long
正如bdonlan所指出的,这只是指定值的范围,而不是内存中的大小( sizeof以字节为单位返回)。C标准没有指定每种类型可以使用的内存大小,因此它留给实现。
发布于 2009-08-06 16:46:08
https://stackoverflow.com/questions/1240121
复制相似问题