Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C sizeof(int)<;=尺寸(长)<;=sizeof(long-long)是否始终为真?_C_Types_Primitive Types - Fatal编程技术网

C sizeof(int)<;=尺寸(长)<;=sizeof(long-long)是否始终为真?

C sizeof(int)<;=尺寸(长)<;=sizeof(long-long)是否始终为真?,c,types,primitive-types,C,Types,Primitive Types,根据C标准,int的长度至少为16位,long的长度至少为32位,long的长度至少为64位(如果有的话)(某些平台可能不支持)。只是想知道作为标题的句子是否总是正确的。否。标准只定义了每种类型的最小范围。可以想象,int可以有一个16位的范围,但有48位的填充,使其达到64位(如果CHAR_bits==8,则为8字节),而long为32位(4字节) 当然,这是愚蠢的。但这并不是被禁止的 但是,请注意,根据定义,sizeof(char)==1。所以sizeof(char)说 C++保证短时间的存

根据C标准,int的长度至少为16位,long的长度至少为32位,long的长度至少为64位(如果有的话)(某些平台可能不支持)。只是想知道作为标题的句子是否总是正确的。

否。标准只定义了每种类型的最小范围。可以想象,int可以有一个16位的范围,但有48位的填充,使其达到64位(如果CHAR_bits==8,则为8字节),而long为32位(4字节)

当然,这是愚蠢的。但这并不是被禁止的

但是,请注意,根据定义,
sizeof(char)==1。所以
sizeof(char)说

C++保证短时间的存储符合以下要求,特别是:

int≥ 16≥ 短发大小

长的≥ 32≥ 整数的大小

长长的≥ 64≥ 长的尺寸


正如bdonlan指出的,这只是指值的范围,而不是内存中的大小(sizeof以字节为单位返回)。C标准没有指定每个类型可以使用的内存大小,所以它只剩下实现。

< P>至少对于ISOC++,这是明确定义的(除了代码明显>长/长代码>明显的原因),标准3.3.1[Basic .Nask]/2:

有四种带符号整数类型:“带符号字符”、“短整型”、“整型”和“长整型”。在此列表中,每种类型提供的存储空间至少与列表中前面的类型相同


请注意,这是指存储,而不是值范围。这意味着<>代码> <代码> >

这是C++。这个问题是关于C和C标准的。他们不必同意。愚蠢的我没有注意到这个问题的“C”标签。。。对不起,C++参考!你应该明白任何一本教科书告诉你的可能都不是真的。教科书没有定义语言,国际标准也有定义。K&RCBook是C89之前C语言的典型标准。此外,lua是一种广泛使用的语言,没有国际标准,由其参考手册定义。顺便说一下,您可以退出搜索。长长不是C++的一部分。你确信关于sieof(char),因为sisiof的单位是sieof(char)(它定义了整数因子(char),根据定义),我希望如此。而C++需要代码< > sisiof(int),如果我理解为LITB的话(C++需要它,C缺乏需要它的正式规则,即使不尊重这种不平等性是一个非常奇怪的实现)这些是位,而不是字节,因此指类型的范围-除非机器上的sizeof(int)真的>=16:)。这也适用于sizeof()运算符的结果吗?@bdonlan:谢谢,我现在看到了区别。我将我的答案编辑为尽可能正确的答案。:)我喜欢“赞成”和“反对”的票数基本相同。LOLYes是实际的答案,No是理论上的答案。有趣的是,有没有人知道一个实际的C实现,提问者所问的不是真的?事实上,“Yes it always true”的答案有如此多的选票说明了使用民主来回答技术问题的问题。没有引用,甚至可能不正确,但它符合大多数人(错误?)的概念,因此它获得了很多选票。如果人们在回答以“C标准”开头的问题时真的会引用一个标准,那就好了。我认为如果人们不知道答案是否正确,而不投票,那就更好了。你也可以引用标准,但引用的部分是错误的。都是选民的错。