我正在使用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;
}
答案 0 :(得分:9)
问题是+
运算符的优先级高于<<
运算符。你写的实际上意味着:
ans = n << (3 + n) << 1;
你真正想要的是:
ans = (n<<3) + (n<<1);