一个很小的程序,调了好久都没成功。最后终于发现,原来是移位运算符的优先级没考虑到。
注意移位运算的优先级,是要低于+,-运算的,相信很多人都没注意到这个问题,eg:
#include <stdio.h>
int main ()
{
int a=1;
printf("%d,%d\n",a<<2+a,a);
printf("%d,%d\n",(a<<2)+a,a);
return 1;
}
结果是什么?
一个很小的程序,调了好久都没成功。最后终于发现,原来是移位运算符的优先级没考虑到。
注意移位运算的优先级,是要低于+,-运算的,相信很多人都没注意到这个问题,eg:
#include <stdio.h>
int main ()
{
int a=1;
printf("%d,%d\n",a<<2+a,a);
printf("%d,%d\n",(a<<2)+a,a);
return 1;
}
结果是什么?