在Bjarne Stroustrup撰写的C++之旅中,每章的末尾列出了一些建议。在第一章的末尾,其中一个写道:



什么是魔术常数和符号常数?

最佳答案

somethingElse = something * 1440;           // a magic constant
somethingElse = something * TWIPS_PER_INCH; // a symbolic one

第一个是魔术常数的示例,除了其值外,它不传递任何其他信息。

由于意图很明确,后者更为有用。

如果您有多个具有相同值的事物,则使用符号常量也有很大帮助:
static const int TWIPS_PER_INCH = 1440;
static const int SECTORS_PER_FLOPPY = 1440; // showing my age here :-)

这样,如果其中之一发生更改,您可以轻松地确定代码中的哪个1440必须更改。由于魔术1440散布在整个代码中,因此您必须在多个位置进行更改,并找出哪些是缇,哪些是扇区。

10-08 09:27