C语言中关于常量的理解

1.普通常量

#include<stido.h>
int main(){
    113;
    5;
    'l';
    "ly";
    return 0;
}

 这些都属于普通常量,存在,但是没有什么意义,就如同你人生中碰到的许多人,他们都存在,但无法对你生活造成任何影响。

2.const修饰的常变量

#include <stdio.h>
int main(){
    const int n=113;
    n=5;
    printf("n=%d\n",n);
}

 由const修饰的常变量无法在后续更改修饰的值,我们在const下面定义了一个n=5之后,程序会报错,因为这个时候n的值已经被锁定为113了,所以我们后续不能再对n的值进行更改了。


那么为什么说由const修饰的是常变量而不是常量呢

#include <stdio.h>
int main(){
    int sum[5] = {0};
    const int n=5;
    int s[n] = {0};
    return 0;
}

在这个程序中,在s[n]这一行程序会报错,我们在定义数组s[ ]的时候,[ ]中的必须要是常量,而不能是变量,因为数组的总长度是固定的,不能被更改,而n虽然是被const修饰了,看起来像是一个常量,但实际上n还是一个变量。

虽然我们在定义数组的时候[ ]里面只能用常量,但我们使用数组的时候[ ]里面的值可以是常量或变量,例如我们需要遍历数组的数的时候,我们可以用s[n]来遍历。

3.#define定义的标识符常量

#include <stdio.h>
#define num 10000
int main(){
    int n=num;
    printf("n=%d\n",n);
}

 #define又称宏定义,标识符为所定义的宏名,简称宏。#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。

 那么关于#define,我们还需要注意一点

#include <stdio.h>
#define num 4+2
int main(){

    float n=num/2;
    printf("n=%f\n",n);
}

当程序运行出来的时候,你可能认为是6/2=3,那你就掉入陷阱了,当程序运行时,因为程序只知道你给num定义的是4+2,但程序不会提前把它们加起来,所以运行的时候是4+2/2=5,那么我们应该如何解决这个问题呢?非常的简单,我们只需要给num加上括号就行了

#include <stdio.h>
#define num 4+2
int main(){

    float n=(num)/2;
    printf("n=%f\n",n);
}

当加上括号后程序运行的时候就会以(4+2)/2的方式来运行,最终得出需要的结果。 

4枚举常量

枚举常量:就是能够一一列举的常量

#include <stdio.h>
    enum sum{           //enum是一种枚举类型
    //而enum当中放的三个值就是枚举常量
        l,
        z=113,
        c=5,
        h,
        j,
        t,
    };
int main(){
    enum sum a = z;
    printf("%d\n",l);
    printf("%d\n",a);       
    printf("%d\n",c);
    printf("%d\n",h);
    printf("%d\n",j);
    printf("%d\n",t);
}

16a3a4f0c05141d7a82d0690dc8460cb.png

我们可以看到,由上往下依次打印出来后,结果是这样的,未赋值的量会根据前一个被赋值的量加1后输出,例如我给c赋值的是5,那么h正好在c后面,所以h打印出来的就是c的值加1,而一开始的l前面没有被赋值的数,所以系统自动把它的值定义为0。

 

 

 

如果觉得这篇文章对你有用的话,可以支持一下博主,b站搜索:夜临ね   即可搜索到我,本人现在制作火影视频,如果要打段位也可以私聊我

b39d53be99b246278130e4fbd1849633.jpg

 

  • 40
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值