为什么这个按位运算返回30而不是384?

时间:2014-06-16 14:02:43

标签: c bitwise-operators dev-c++

我正在使用Dev-C ++编译器。该程序应打印30,但打印384

#include <stdio.h>

int main() {
    int n = 3;
    int ans;

    ans = n<<3 + n<<1;
    printf("%d", ans);

    getch();
    return 0;
}

1 个答案:

答案 0 :(得分:9)

问题是+运算符的优先级高于<<运算符。你写的实际上意味着:

ans = n << (3 + n) << 1;

你真正想要的是:

ans = (n<<3) + (n<<1);