使用不必要的十六进制符号?

问题描述 投票:0回答:1

虽然读Apple's dlfcn.h header,但我可以浏览这些宏:

    #define RTLD_LAZY   0x1
    #define RTLD_NOW    0x2
    #define RTLD_LOCAL  0x4
    #define RTLD_GLOBAL 0x8

当可以安全删除前缀0x时,为什么有此标题的作者将它们写为十六进制数字? 0x10x2等与没有0x的数字相同。

这只是个人编码风格吗?

c++ macros hex
1个回答
1
投票
当然,这里只有四个选项,但考虑可能的扩展名:

0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 // ...

尽管以十进制表示法表示的等效序列对于任何程序员来说都是立即熟悉的,但并不是那么清晰/对称:

1
2
4
8
16
32
64
128
// ...

因此,在这里使用十六进制成为惯例。

当然,除此之外。有些人喜欢使用十六进制表示“计算机使用的数字”,因为它看起来有点像机器人。 c.f. “人类使用的数字”的小数。

还应考虑使用这些常量的值可能会使用按位运算符(在十六进制中同样方便)进行操纵,并在提供十六进制字节值的调试器中进行查看。如果源代码中的值与程序的操作和工具使用相同的基础,则交叉引用将更容易。在这种情况下,0x22比34更容易理解。

最终,您可能还会问为什么我们

ever使用十六进制而不是十进制,因为两者之间始终存在有效的转换。事实是,在某些情况下,某些基地比其他基地更方便。您不会指望二进制,因为您有十根。

© www.soinside.com 2019 - 2024. All rights reserved.