当前位置: 代码迷 >> 汇编语言 >> 请教这个如何运算
  详细解决方案

请教这个如何运算

热度:3444   发布时间:2013-02-26 00:00:00.0
请问这个怎么运算?
#define EIF_FLAG_BASE '0'
  #define EIF_FLAG_SCRAP 0x0001  

 
  #define EIF_SET_SCRAP(x) (x) = (EIF_FLAG_BASE + (((x) - EIF_FLAG_BASE) | EIF_FLAG_SCRAP));

此时如果我传入 #define EIF_SET_SCRAP(!) 或者 x 传入 Null,结果是什么?
我不会算这个,特别是 ((x) - EIF_FLAG_BASE) 这一步,是先算哪一个,再算哪一步呢?

也不知道我问题是不是说清楚了,谢谢了~~~

------解决方案--------------------------------------------------------
首先呢,楼主这个是汇编版块是吧,,呵呵

正题:((x) - EIF_FLAG_BASE)这个先算(x)的在算外面一个括号的
------解决方案--------------------------------------------------------
#define EIF_SET_SCRAP(x) (x) = (EIF_FLAG_BASE + (((x) - EIF_FLAG_BASE) | EIF_FLAG_SCRAP));
如果传入!,'!'={'0'+(('!'-'0')|1)));
如果是NULL的話,把‘!’改為NULL

这个运算完还是等于本身传进的参数值
  相关解决方案