sizeof(2.5) 等于什么?
What is sizeof(2.5) equal to?
试题是:
Q2: sizeof(2.5)
is equal to ____.
A.1
B.2
C.3
D.4
没有f l F L
这样的后缀,所以浮点常量(2.5)
是double类型。由于没有指定其他内容,我想它的值是未指定的。例如,在某些 CHAR_BIT
为 32(可能导致 sizeof (char)==sizeof (long)
)的实现中,答案可以是 B.
然而,在大多数情况下,CHAR_BIT
是8,答案应该是8,但8并没有列在试卷上!
exam/interview被问到这么荒唐的问题,我该怎么回答?
PS: 请忽略这些无用的括号:)
PPS: IEEE 754 是否被标准授予?
sizeof
returns chars
中的大小,而不是位。因此,例如,sizeof(char)
根据定义 1
.
但是,这个问题写得不是很好,因为它是系统特定的。我 猜测 是你系统上 double
的 sizeof
是 8
,这将是 64 位的,因为 (8 * CHAR_BIT)
= = ``(假设 CHAR_BIT
的公共值为 8
)。
sizeof(2.5)
将产生 double
的大小(以字节为单位)——这是实现定义的。
来自标准:
5.3.3 Sizeof
The sizeof operator yields the number of bytes in the object representation of its operand.
The result of sizeof
applied to any other fundamental type (3.9.1) is implementation-defined.
这个问题不一致:sizeof(2.5)
是实现定义的。没有额外的上下文,无法确定选择哪个答案。
如果这是口试,你可以向考官解释这一点,考虑到你已经知道了多少,应该会得到很好的分数。 (顺便说一句,IEEE-754 不是 标准强制要求的,而是 double
的一个非常常见的实现)。
如果是笔试,你不能给出进一步的解释(边缘space太稀疏),你应该select 4
,原因如下:
考官可能错误地假设 2.5
是一个 float
,并且还错误地假设 float
总是 32 位,进一步错误地假设字节是8 位。这是最可能的解释。如果你认为自己比考官更了解,那么在口试中要小心保持谦虚,这里可能就是这种情况。
问题可能拼写错误,例如 sizeof("2.5")
但缺少 "
。对于这道题,答案肯定是4
,用C
的答案来糊弄学生是有道理的。
问题可能拼写错误,例如 sizeof('2.5')
但缺少 '
。对于这个 非常 丑陋的问题,答案与 sizeof(int)
相同,通常在具有 8 位字节的系统上 4
。请注意 sizeof(2,5)
也与 sizeof(int)
相同,但这也是一个技巧问题。
在某些 double
是 64 位而 char
是 16 位的 DSP 系统上,答案 4
是正确的。
其他答案更不可能是正确的,当然 DS9K
电脑除外。
试题是:
Q2:
sizeof(2.5)
is equal to ____.A.1
B.2
C.3
D.4
没有f l F L
这样的后缀,所以浮点常量(2.5)
是double类型。由于没有指定其他内容,我想它的值是未指定的。例如,在某些 CHAR_BIT
为 32(可能导致 sizeof (char)==sizeof (long)
)的实现中,答案可以是 B.
然而,在大多数情况下,CHAR_BIT
是8,答案应该是8,但8并没有列在试卷上!
exam/interview被问到这么荒唐的问题,我该怎么回答?
PS: 请忽略这些无用的括号:) PPS: IEEE 754 是否被标准授予?
sizeof
returns chars
中的大小,而不是位。因此,例如,sizeof(char)
根据定义 1
.
但是,这个问题写得不是很好,因为它是系统特定的。我 猜测 是你系统上 double
的 sizeof
是 8
,这将是 64 位的,因为 (8 * CHAR_BIT)
= = ``(假设 CHAR_BIT
的公共值为 8
)。
sizeof(2.5)
将产生 double
的大小(以字节为单位)——这是实现定义的。
来自标准:
5.3.3 Sizeof
The sizeof operator yields the number of bytes in the object representation of its operand.
The result of sizeof applied to any other fundamental type (3.9.1) is implementation-defined.
这个问题不一致:sizeof(2.5)
是实现定义的。没有额外的上下文,无法确定选择哪个答案。
如果这是口试,你可以向考官解释这一点,考虑到你已经知道了多少,应该会得到很好的分数。 (顺便说一句,IEEE-754 不是 标准强制要求的,而是 double
的一个非常常见的实现)。
如果是笔试,你不能给出进一步的解释(边缘space太稀疏),你应该select 4
,原因如下:
考官可能错误地假设
2.5
是一个float
,并且还错误地假设float
总是 32 位,进一步错误地假设字节是8 位。这是最可能的解释。如果你认为自己比考官更了解,那么在口试中要小心保持谦虚,这里可能就是这种情况。问题可能拼写错误,例如
sizeof("2.5")
但缺少"
。对于这道题,答案肯定是4
,用C
的答案来糊弄学生是有道理的。问题可能拼写错误,例如
sizeof('2.5')
但缺少'
。对于这个 非常 丑陋的问题,答案与sizeof(int)
相同,通常在具有 8 位字节的系统上4
。请注意sizeof(2,5)
也与sizeof(int)
相同,但这也是一个技巧问题。在某些
double
是 64 位而char
是 16 位的 DSP 系统上,答案4
是正确的。其他答案更不可能是正确的,当然
DS9K
电脑除外。