C语言常量
在程序运行过程中,其值不能被改变的量称为
类型:
- 字面常量(可以认为包括字符常量 带单引号‘1’,各种进制的数字)
int main()
{
85 /* 十进制 */
0213 /* 八进制 */
0x4b /* 十六进制 */
30 /* 整数 */
30u /* 无符号整数 */
30l /* 长整数 */
30ul /* 无符号长整数 */
//1: 字面常量
//int a;变量
int a = 1; //可运行 把常量赋值给了变量a
}
- 字符串常量
int main()
{
“abc” //字符串常量 存储在静态常量区
//因为C语言没有String类型 所以只能用数组接收字符串
char arr[] = "abc" //它的本质arr[4] = {'a','b','c','\0'}
printf("%s",arr) //输出是abc
char arr1[] = {'a','b','c'} // 输出是abc乱码 为什么呢 它的本质和上面arr少了一个字符也就是结束符号\0
char arr2[] = {'a','b','c','\0'}输出就是abc
}
- const修饰的常变量
int main()
{
const int a = 10; //为什么叫常变量因为本质还是变量不是常量为什么这么说呢 下面证明
int arr[a] = {1);//运行错误 因为a不是常量 所有用了const只是让变量a无法修改
int arr1[10]={1};//运行正确因为数字10是字面常量 也就是说声明数组的范围要写常量
}
- #define定义标识符常量
define max 10
int main()
{
int arr[max]={21,2} //运行正确 它就不会像const常变量的情况
}
- 枚举常量 -- enum关键字
enum Sex
{
male,
female
};
int main()
{
enum Sex sex = male;
printf("%d",sex);//输出的是0 有点像数组的索引一样从0开始
sex = female;
printf("%d",sex);//输出是1
//那么我们证明一下枚举为什么是常量
male = 1;//报错 毕竟人家是常量不可以重新赋值
//常量有什么用呢 我们上面证明了他可以输出索引的 我尝试玩了一下发现可以这样
int arr[1] = {male};
printf("%d",arr[0]); //输出是 0 如果填的female就是 1
return 0;
}