定义SOMETHING(' w'<< 8)

时间:2015-12-02 09:30:47

标签: c bitmask

我来了accros这行代码:

#define BWAKUP              ('w' << 8)

它做什么?它与以下相同:

#define BWAKUP              (167000)

另外,另一个定义为:

#define CWAKUP                  (1 + BWAKUP)

相当于:

#define CWAKUP                  (356000)

对吗?

2 个答案:

答案 0 :(得分:1)

此行定义宏BWAKUP,扩展为表达式('w' << 8)。假设您的平台使用ASCII,该表达式的值为119·256 = 30464,不等于167000。同样,CWAKUP扩展为(1 + ('w' << 8)),数值为30465,同样假设您的系统使用ASCII。

如果没有更多的上下文,我无法告诉你这些宏的含义是什么。

答案 1 :(得分:1)

  

我来了accros这行代码:

#define BWAKUP              ('w' << 8)
     

它做了什么?

它将预处理器宏BWAKUP定义为('w' << 8)。这意味着,只要BWAKUP出现在源代码中,它就会被('w' << 8)替换。例如,printf("%i\n", BWAKUP);将更改为printf("%i\n", ('w' << 8));

  

与以下相同:

#define BWAKUP              (167000)

不,不是。

  

另外,另一个定义为:

#define CWAKUP                  (1 + BWAKUP)
     

相当于:

#define CWAKUP                  (356000)
     

对吗?

不,但它等同于#define CWAKUP (1 + ('w' << 8))