【发布时间】:2011-09-11 00:03:05
【问题描述】:
我不是专家,所以请放轻松。这两个代码段有什么区别吗?
#define BIT3 (0x1
<
<
3)
static int a;
和
#define BIT3 (0x1 << 3) static int a;
另外,有没有办法在一行中写第一个?这种多线样式的意义何在?下面的代码好吗?
#define BIT3 (0x1 << 3)
static int a;
【问题讨论】:
-
第一个片段有两个连续的
<(小于)运算符,没有<<(移位)运算符。它还有一个类似对象的宏,其值为(0x1,后跟 3 行无意义的行(它们不是宏定义的一部分;为此行后面必须有反斜杠),以及宣言。第二个片段完全不同,但更无法使用。(0x1 << 3)本身的表达式没问题,但是后面跟static的定义只是语法错误;您需要在右括号后加一个分号才能获得战斗机会。所以他们是不同的!
标签: c++ c compiler-construction