装修公司报价明细表:宏,常量,枚举

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 11:33:53
宏和常量都是C层级的。其中宏是预处理过程的,真正到编译的时候宏已经没了比如

#define N 10

printf("%d\n", N);

最后交给编译器的是

printf("%d\n", 10);

常量严格说是常变量,区分直接写的1, 'x', "abc"这种“常量”(literal)

常变量本质上仅仅是不允许修改的变量。但是实现上,因为在编译的时候值已经确定,编译器会直接使用值,不进行读取变量的操作。

const int i = 0;

原则是仅仅是不允许再对i进行复制而已。

但是对于下面写
int x = i;
编译器可能会直接将其作为int x = 0处理。另外不要尝试用任何手段对常变量赋值(也就是说其实可以赋值),因为你这么之后在不同编译器上会得到不同的结果。

枚举类似性质上类似于“常量”而不是“常变量”

enum
{
 a = 1,
 b,
}

int x = a;
编译器就是作为int x = 1处理的。或者说a就是1。上面那个a其实还是个保存着1的变量