C语言中基础常量分为以下几种:
1.字面常量
"3.14" , 'a' , "abcd" 等
2.const修饰的常变量
再变量定义的前面加入const,把变量在作用域内变为不可修改的常变量,但不是常量!
例:
cosnt int a = 5;
//a = 10; //err
int st[5] = {0};
int st[a] = {0};//err, e是变量
3.#define 定义的标识符常量
在函数外的定义。 可以理解为给字符赋值且让字符成为常量。
例:
#include<stdio.h>
#define Max 1000;
int main(){
int a = Max;//a = 5
int arr[Max] = {0};//√
Max = 500 ;//× err 因为Max是常量了,所以是赋不了值的。如:5=10,这肯定是错误的嘛
}
4.枚举常量
与结构体相似,归类变量。
例
#include<stdio.h>
enum Abc{ //enum 是枚举关键字,如int 是整形关键字一样
Max, // Max是枚举常量, Max是0,如果后面还有枚举常量的话,连接用","(逗号表达式)来链接
Min // Min是枚举常量, Min是1, 在最后的一个枚举常量结尾不用加逗号表达式。
};//在枚举类型结束后有";"
int main(){
enum Abc s = Max;//也可以为Min, s是枚举类型Abc的变量,变量s被赋值为Max即是0
Max = 3;//× 不可以为Max 和 Min的每集常量赋值
printf("%d %d %d",Max,Min,s);//输出0 1 0
return 0;
}
如果想要改变Max和Min的值只能在枚举里面赋与枚举常量的初值,注意不是给枚举常量赋值,只是赋给他一个开始的值,正常情况下枚举常数是从0开始然后后面每个枚举常量都加1,但是通过赋初值的话,他开始就是给他赋的值开始
例
enum Abc {
Max = 3,//给Max的初始值是3
Min, // Min就为4了
asd = 100, // 正常情况下asd的值应该是5的,但是给asd赋初值为100,所以asd的开始的初始数为100
qwe //qwe为101
}
int main(){
printf("%d %d %d %d",Max,Min,asd,qwe); //输出3 4 100 101
return 0;
}