C sizeof(2.5)等于多少?
一道试题是: 问题2:C sizeof(2.5)等于多少?,c,language-lawyer,sizeof,C,Language Lawyer,Sizeof,一道试题是: 问题2:sizeof(2.5)等于 A.1 B.2 C.3 D.4 没有像fl这样的后缀,因此浮点常量(2.5)具有双精度类型。因为没有指定其他内容,所以我认为它的值是未指定的。例如,在一些CHAR\u位为32的实现上(可能导致sizeof(CHAR)==sizeof(long)),答案可以是B 然而,在大多数情况下,CHAR\u BIT是8,答案应该是8,但纸上没有列出8 当在考试/面试中被问到如此荒谬的问题时,我应该回答什么 请忽略这些无用的括号:) PPS:IEEE 754是
sizeof(2.5)
等于
A.1
B.2
C.3
D.4
没有像fl
这样的后缀,因此浮点常量(2.5)
具有双精度类型。因为没有指定其他内容,所以我认为它的值是未指定的。例如,在一些CHAR\u位
为32的实现上(可能导致sizeof(CHAR)==sizeof(long)
),答案可以是B
然而,在大多数情况下,CHAR\u BIT
是8,答案应该是8,但纸上没有列出8
当在考试/面试中被问到如此荒谬的问题时,我应该回答什么
请忽略这些无用的括号:)
PPS:IEEE 754是否由标准授予?
sizeof
返回字符大小,而不是位。例如,sizeof(char)
根据定义是1
然而,这个问题写得不是很好,因为它是特定于系统的。我的猜测是,您系统上的
double
的sizeof
是8
,这将是64位,因为(8*CHAR\u位)
=``(假设字符位的公共值为8
)。sizeof
返回的是字符的大小,而不是位。例如,sizeof(char)
根据定义是1
然而,这个问题写得不是很好,因为它是特定于系统的。我的猜测是,您系统上的double
的sizeof
是8
,这将是64位,因为(8*CHAR\u位)
==```(假设CHAR\u位的公共值为8
)。sizeof(2.5)
将产生双字节的大小,以字节为单位,这是实现定义的
来自标准:
5.3.3尺寸
sizeof运算符在其操作数的对象表示形式中产生字节数。
sizeof的结果
应用于任何其他基本类型(3.9.1)的是实施定义
sizeof(2.5)
将以字节为单位生成一个double
的大小,这是实现定义的
来自标准:
5.3.3尺寸
sizeof运算符在其操作数的对象表示形式中产生字节数。
sizeof的结果
应用于任何其他基本类型(3.9.1)的是实施定义
这个问题不一致:sizeof(2.5)
是实现定义的。没有额外的背景,人们无法决定选择哪个答案
如果这是口试,你可以向考官解释这一点,并且根据你已经知道的内容,你应该会得到一个很好的分数。(顺便说一句,IEEE-754不是标准规定的,而是双重的一种非常常见的实现)
如果是笔试,您无法给出进一步解释(边距太小),您应选择4
,原因如下:
- 考官可能会错误地假设
2.5
为浮点
,也可能错误地假设浮点
始终为32位,进一步错误地假设字节为8位。这是最可能的解释。在口试中要小心,保持谦虚。如果你认为自己比主考人懂得更多,这里可能就是这样
- 这个问题可能是拼写错误,例如
sizeof(“2.5”)
,但缺少“
。对于这个问题,答案肯定是4
,尝试用C
答案愚弄学生是有意义的
- 这个问题可能是错误的,例如
sizeof('2.5')
,但缺少”
。对于这个非常难看的问题,答案与sizeof(int)
相同,在具有8位字节的系统上通常是4
。请注意sizeof(2,5)
也与sizeof(int)相同
,但这也是一个棘手的问题
- 在某些DSP系统上,
double
为64位,而char
16位,则回答4
是正确的
- 当然,除了在
DS9K
计算机上,其他答案更不可能是正确的
这个问题是不一致的:sizeof(2.5)
是实现定义的。没有额外的上下文,就无法确定要选择哪个答案
如果这是口试,你可以向考官解释这一点,并且根据你已经知道的内容,你应该会得到一个很好的分数。(顺便说一句,IEEE-754不是标准强制要求的,而是非常常见的双)
如果是笔试,您无法给出进一步解释(边距太小),您应选择4
,原因如下:
- 考官可能会错误地假设
2.5
是一个float
,也可能错误地假设float
总是32位,进一步错误地假设字节是8位。这是最有可能的解释。在口试中要小心,保持谦虚,如果你认为自己比考官知道得多,这是可能的这里的情况就是如此
- 问题可能是拼写错误,例如
sizeof(“2.5”)
,但缺少“
。对于这个问题,答案肯定是4
,尝试用C
答案愚弄学生是有意义的
- 问题可能是拼写错误,例如
sizeof('2.5')
,但缺少”
。对于这个非常难看的问题,答案与sizeof(int)
相同,在8位字节的系统上通常是4
。N