3

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

#define IM 0x1

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

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

4

4 回答 4

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)直接将它们的内容替换为它们在代码中出现的位置。因此,如果您要使用表达式或类似的表达式,最好用括号括起来。

于 2012-04-25T13:40:31.450 回答
6

它是十六进制数 1,通常在做二进制标志时这样定义。所以你会有

0x1
0x2
0x4
0x8
0x10

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

于 2012-04-25T13:43:16.827 回答
4

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

http://en.wikipedia.org/wiki/十六进制

于 2012-04-25T13:40:33.153 回答
3
#define IM    0x1

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

于 2012-04-25T13:43:36.723 回答