Shy*_*yam 4 c dev-c++ bitwise-operators
我正在使用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;
}
Run Code Online (Sandbox Code Playgroud)
问题是+运营商的优先级高于<<运营商.你写的实际上意味着:
ans = n << (3 + n) << 1;
Run Code Online (Sandbox Code Playgroud)
你真正想要的是:
ans = (n<<3) + (n<<1);
Run Code Online (Sandbox Code Playgroud)