我遇到了一行代码,如下所示
#define IM 0x1
我确实知道IM代表什么,但我很想知道0x1
代表什么,它的用途及其在define语句中的用途的意义。
我是C的新手,我确实搜索过这个特定的项目但找不到它。在此先感谢您的帮助。
答案 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)形式表示的第一个。
答案 3 :(得分:3)
#define IM 0x1
这是另一个位置数字系统:十六进制。这里,它是数字«1»的十六进制形式。