昨天在面试中被问到以下代码的输出
#include <stdio.h>
int main(void){
printf ("%x" ,-1<<4);
}
我有2分钟的时间告诉答案。我回应了
fffffff0
。采访的结果尚未宣布。我想知道我的答案正确吗? 最佳答案
从技术上讲,将负整数左移会调用未定义的行为。这意味着-1<<4
是UB。我不知道他们为什么问你这个问题。他们可能想测试您对C和C++标准的了解程度。
C99 [6.5.7/4
]说
C++ 03通过omitting the relevant text使其变为未定义的行为。
关于c++ - 面试题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4269838/