我对符号常量和字面常量的定义和用途感到困惑,想知道有人能否解释它们并突出它们的区别。谢谢!
符号是编译器处理的内容。编译器对待const
与变量几乎相同。然而,#define
则不同,因为预编译器会将其转换为其值,编译器甚至不知道其存在。这就像搜索和替换一样。如果你这样做:
#define A 5
然后
b += A;
预编译器将其转换为
b += 5;
编译器只看到数字5。
int breakpoint = 10;
#define TEN 10 /* These two lines of code become one... */
breakpoint += TEN; /* after running through the precompiler */
预编译器将其转换为
Breakpoint += 10;
我认为你的意思是,字面常量是原始表达式,例如“string”或2或false,而符号常量是当你给它一个名称时,例如const int MagicNumber = 42。两者都可以用作表达式,但是你可以通过名称引用后者。如果您从多个位置使用相同的常量,则非常有用。
const int
对象并不是一个常量。为了在C语言中生成命名常量(符号常量),必须使用#define
或枚举。 - AnT stands with Russia