考试问题是:
Q2:
sizeof(2.5)
等于____。A.1
B.2
C.3
D.4
没有f l F L
这样的后缀,因此浮点常量(2.5)
具有双精度类型。由于没有指定其他内容,我认为其值未指定。例如,在CHAR_BIT
为32(可能导致sizeof (char)==sizeof (long)
)的某些实现中,答案可以是B.
但是,在大多数情况下,CHAR_BIT
为8,答案应为8,但纸上未列出8!
在考试/面试中被问到如此荒谬的问题时,我应该回答什么?
PS:请忽略这些无用的括号请:) PPS:标准是否授予IEEE 754?答案 0 :(得分:10)
这个问题不一致:sizeof(2.5)
是实现定义的。没有额外的背景,人们无法确定选择哪个答案。
如果这是口试,你可以向考官解释,并且鉴于你已经知道多少,应该得到一个非常好的标记。 (顺便说一下IEEE-754 不标准强制要求,但是double
的非常常见的实现。)
如果是书面考试,您无法给出进一步的解释(边际空间过于模糊),您应该选择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
计算机。
答案 1 :(得分:2)
form_extra_fields = {
'password2': PasswordField('Password')
}
将以字节为单位生成sizeof(2.5)
的大小 - 这是实现定义的。
来自标准:
5.3.3尺寸
sizeof运算符产生其操作数的对象表示中的字节数 sizeof的结果 应用于任何其他基本类型(3.9.1)是实现定义的。
答案 2 :(得分:1)
sizeof
返回chars
中的大小,而不是位。因此,例如,sizeof(char)
按定义1
。
但是,这个问题编写得不是很好,因为它是系统特定的。我的猜测是您系统上sizeof
的{{1}}是double
,自8
==``之后它将是64位(假设(8 * CHAR_BIT)
的公共值为CHAR_BIT
)。