为什么按位操作返回30而不是384?
问题描述:
我正在使用Dev-C++编译器。这个程序应该打印30
,但它的打印384
。为什么按位操作返回30而不是384?
#include <stdio.h>
int main() {
int n = 3;
int ans;
ans = n<<3 + n<<1;
printf("%d", ans);
getch();
return 0;
}
答
的问题是,+
操作符比<<
运营商更高的优先级。什么,你居然写的意思是:
ans = n << (3 + n) << 1;
你真正想要的是:
ans = (n<<3) + (n<<1);
参见[运算符优先级(http://en.cppreference.com/w/cpp/language/operator_precedence) – harold
有谁知道Dev-C++是否提供纯C模式?如果没有,C标签可能应该改为C++。 –
Dev C++只是一个老版本的Mingw/GCC/G ++的IDE(过时)。如果我没有记错,它会根据文件扩展名.c或.cpp选择语言。 – Lundin