在#define中使用0x1是什么意思?

时间:2012-04-25 13:39:18

标签: c

我遇到了一行代码,如下所示

#define IM 0x1

我确实知道IM代表什么,但我很想知道0x1代表什么,它的用途及其在define语句中的用途的意义。

我是C的新手,我确实搜索过这个特定的项目但找不到它。在此先感谢您的帮助。

4 个答案:

答案 0 :(得分:9)

它只是十六进制(基数为16)的第一个定义。这可能用于避免代码中的幻数。魔术数字是指程序员在代码中使用直接数字而无需解释。例如

int x = 32;
x -= 8;

这段代码几乎没有任何意义,但如果我这样做

#define TOTAL_BITS 32
#define BITS_PER_BYTE 8

int x = TOTAL_BITS;
x -= BITS_PER_BYTE;

代码更清晰。无论如何,宏(即#define)直接将其内容替换为它们在代码中显示的位置。因此,如果您要使用表达式或类似表达式,最好用parens包围它。

答案 1 :(得分:6)

它是十六进制数字1,通常在执行二进制标志时定义如下。所以你会有

0x1
0x2
0x4
0x8
0x10

所以你可以看到你正在设置的位。

答案 2 :(得分:4)

这是以十六进制(基数16)形式表示的第一个。

http://en.wikipedia.org/wiki/Hexadecimal

答案 3 :(得分:3)

#define IM    0x1

这是另一个位置数字系统:十六进制。这里,它是数字«1»的十六进制形式。