C语言中几个常量的区别

来源:互联网 发布:一维动态数组定义 编辑:程序博客网 时间:2024/05/17 13:06
有三种   enum 标识名{整型常量} ;    #define  宏名字 替代正文   常变量 const 变量 变量名= 值;
这三者之间存在区别   #define  宏名字 替代正文 是完全没有约束的正文替代,他的结果不受任何限制,完全不顾程序的语法和语义。尽量少用。
 const 变量 变量名= 值; 这个本意是变量,只是在定义的时候进行了初始化,而且不能再重新赋值了。定义位置决定了他的定义域和存在期。但是他本来是变量,不能用在“常量表达式”中,例如case 标号的常量,枚举型常量等。常变量中存在期始终保持一个固定的值,但是同一局部定义的常变量的两个存在过程却可能是保存着不同的值。eg  
for(i =1; i <10;++i)
{
const int  n = i*i;
}
 enum 标识名{整型常量} ; 枚举型的常量值必须是int 型。它可以用在常变量不能用的地方。可以初始化全局变量等。
故建议:整型常量 尽量用枚举型,其他类型 尽量用常变量。最后才用 #define 宏。
 
(注:枚举类型的常量值,最好不要写成负数, 偶,。。。)