C语言中常量一般分为四种:
1.字面意思的常量——数字
int main()
{
66;
88;
return 0;
}
像上图的66和88就是常量。
2.const修饰的常量
(1)const修饰后值不可修改
先看一条没有const的代码:
此处的a先初始化为20
然后a可以+20
最终打印出来的a值为40
int main()
{
int a = 20;
a += 20;
printf("%d\n", a);
return 0;
}
再看一条有const的代码:
此时a的下面有一条波浪线,说明系统在检查错误
const函数具有常属性,比如上面的const int a=20,就拥有常量的属性。
因为a前面有const,所以a是一个不可以修改的值
此代码有问题,会报错
(2)虽然具有常属性,但其实仍不是常量
int main()
{
//const int a = 20;
int arr[20] = { 1,2,3 };
return 0;
}
如果不用arr[a],而是用arr[20],程序就可以正常运行。
这就说明虽然具有常属性,但它仍然是变量,而不是常量
3.#define定义的标识符常量
继续以上述的代码举例
如果刚刚的int arr[a]={1,2,3}会报错,是因为const int a本质上还是个变量
那么让arr[NUM] 运行成功不就能说明#define定义的标识符其实是个常量
#define NUM 20
int main()
{
int arr[NUM] = { 1,2,3 };
for(int i=0;i<3;i++)
printf("%d\n", arr[i]);
return 0;
}
4.枚举常量——enum
枚举的意思就是把所有的可能性给列出来
enum weekday
{
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday
};
int main()
{
printf("%d\n", Monday);
printf("%d\n", Tuesday);
printf("%d\n", Wednesday);
printf("%d\n", Thursday);
printf("%d\n", Friday);
printf("%d\n", Saturday);
printf("%d\n", Sunday);
}
由此可见,枚举常量默认从0开始,如果想修改初始值也可以。