C语言常量 总结

111 阅读2分钟

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;
}