Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么按位操作返回30而不是384?_C_Bitwise Operators_Dev C++ - Fatal编程技术网

C 为什么按位操作返回30而不是384?

C 为什么按位操作返回30而不是384?,c,bitwise-operators,dev-c++,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; } #包括 int main(){ int n=3; INTANS; ANS= N< P>问题是代码> +>代码>操作符比有

我正在使用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;
}
#包括
int main(){
int n=3;
INTANS;

ANS= N< P>问题是<>代码> +>代码>操作符比有更高的优先级。有人知道DEV-C++是否提供了纯C模式?如果不是,C标签应该可能被更改为C++。IDE是一个旧版本Mingw/GCC/G++。如果我没记错的话,它选择了基于文件扩展名.c或.cpp的语言。@user3745158请注意,
int
是一个有符号类型,对有符号类型执行移位操作没有任何意义。你应该将它切换到
uint32\u t
或类似的语言。@Lundin为什么不这样做有意义吗?只要你知道输出是什么,对我来说似乎很好。我认为对一个小于10的整数执行小于4的两个移位是完全没有问题的。
ans = n << (3 + n) << 1;
ans = (n<<3) + (n<<1);