昨天在面试中被问到以下代码的输出

#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/

10-11 19:53