nal*_*zok 1 c sizeof language-lawyer
考试问题是:
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是否被该标准授予?
chq*_*lie 10
这个问题不一致:sizeof(2.5)是实现定义的.没有额外的背景,人们无法确定选择哪个答案.
如果这是口试,你可以向考官解释,并且鉴于你已经知道多少,应该得到一个非常好的标记.(顺便说一下,IEEE-754 不是标准规定的,而是非常常见的实施方案double).
如果是书面考试,你不能给出进一步的解释(边际空间太过分了),你应该选择4以下原因:
检查者可能错误地认为2.5是a float,并且还错误地假设float总是32位,进一步错误地假设字节为8位.这是最可能的解释.如果你认为自己比考官更了解,那么在口试中要小心保持谦虚,这可能就是这种情况.
这个问题可能是拼错,例如sizeof("2.5")但却错过了".对于这个问题,答案是肯定的4,尝试欺骗学生的答案是有意义的C.
这个问题可能是拼错,例如sizeof('2.5')但却错过了'.对于这个非常难看的问题,答案与sizeof(int)通常 4在具有8位字节的系统上的答案相同.请注意,这sizeof(2,5)也是一样的sizeof(int),但这也是一个棘手的问题.
在一些double64位和char16位的DSP系统上,答案4是正确的.
其他答案甚至不太可能是正确的,当然除了在DS9K计算机上.