发现<<的优先级好低呀

来源:互联网 发布:汽车租赁管理系统java 编辑:程序博客网 时间:2024/04/19 22:16
发现<<的优先级好低呀...还是我太无知了...

#include <stdio.h>

#define GET_BIT(a, b, c) a << b - c
int main()
{
  int a = 1;
  int b = 5;
  int c = 4;

  printf("%d/n", GET_BIT(a, b, c) + 1);
}

result: 4

 C的优先级口诀


括号成员第一;        //括号运算符[]() 成员运算符.  ->
全体单目第二;        //所有的单目运算符比如++、 --、 +(正)、 -(负) 、指针运算*、&
乘除余三,加减四;   //这个"余"是指取余运算即%
移位五,关系六;    //移位运算符:<< >> ,关系:> < >= <= 等
等于(与)不等排第七;    //即== 和!=
位与异或和位或;    //这几个都是位运算: 位与(&)异或(^)位或(|)    
"三分天下"八九十; 
逻辑或跟与;            //逻辑运算符:|| 和 &&
十二和十一;            //注意顺序:优先级(||)  底于 优先级(&&)
条件高于赋值,        //三目运算符优先级排到13 位只比赋值运算符和","高
逗号运算级最低!   
//逗号运算符优先级最低