初识常量变量(c语言)超详细解说!

C语言的语言描述需要用到常量和变量,顾名思义,变量就是可以改变的量,常量是不能改变的量。例如血型,圆周率,性别就是不能改变的量。而工资,年龄,体重就是可以改变的量。

一、变量:

1.变量的创建:

创建一个变量,要先给出变量类型(上一节我们具体探讨了数据类型),再给出变量名,最后将其初始化。

//int age = 0;               这里变量等于几并不重要,关键是将其初始化,=1,2,3....都是可以的

age = age + 1;            变量是可以变化的,不断更新的

printf("%d\n",age);

2.变量的分类

变量分为局部变量和全局变量

当局部变量和全局变量的变量名相冲突时(即相同),局部变量优先

int a = 10;          全局变量:在大括号外面定义

int mian ()

{

int a = 100;

printf(“%d\n”,a);

return 0;            局部变量:在大括号内部定义

}

输出后我们可以发现,a=100;显示的是局部变量。

这里我们用一个例子介绍一个函数(可以附任何值),scanf(“%d%d",&a,&b);&是取值地址,%d是输出类型,其作用是读取键盘所输入的数字分别储存与a,b中。想要引用此函数需加define。

3.变量的生命周期与作用域

作用域:一段代码的变量名并不总是有效可用的,而限制其可用范围的就是其变量域。

局部变量;

局部变量的作用域就是局部变量所在范围,即哪里的局部变量可以执行,哪里就是局部变量的所在范围。其生命周期,顾名思义。就是它起作用的时效,因为局部变量就是定义在大括号内部,那么其实它的生命周期就是所在程序开始执行到所在程序执行结束,这一生命周期。

全局变量:

全局变量的作用域是整个工程。也就是说,全局变量可以被别的文件调用,只要是在一个项目里的,但需要用extern声明一下,如extern int b ;其生命周期就是程序的生命周期。

变量的创建可以放在大括号外,{}表示一个程序的开始与结束,return表示最终代码的结束。

二、常量

在此我们将常量分为四个部分,字符常量,const常量,#define定义的标识符常量,枚举常量。

1.字符常量:

在程序里面,为基本数据类型赋值的结果值被称之为字面常量,例如,int a = 10;这个10被称之为字面常量


  • 整型字面常量

可以表示为10进制、8进制(以0开头),16进制(以0x开头),无符号整型字面常量后面加个u表示,长整型加L表示

    int a1 = 10;
    int a2 = 010;        //8进制表示
    int a3 = 0x10;       //16进制表示
    unsigned a4 = 10u;   //无符号整型字面常量,u大小写都一样
    long a5 = 10L;       //长整型
    long long a6 = 10LL; //长长整型
    

  • 浮点字面常量

 默认为双精度,在数字后面加个f表示单浮点精度,加L表示扩展精度,加e和一个整数表示科学计数法

    float b1 = 3.14F;            //单浮点精度
    double b2 = 3.14;            //双浮点精度
    long double b3 = 3.14L;      //扩展浮点精度
    double b4 = 3.14e5;          //科学计数法,e的前面可以是整型或者浮点型,但e的后面必须是整型

  • 布尔字面常量

true(1)和false(0)

    bool c1 = true;
    bool c2 = false;
    

  • 单字符/字符串字面常量

窄字符(char):单字符用单引号括起来,字符串用双引号括起来

单字符的定义与输出:

    char d1 = 'A';     //单字符
    char d2 = 65;      //ASCII十进制
    char d3 = 0101;    //ASCII八进制
    char d4 = 0x41;    //ASCII十六进制

2.const常变量

其意思是本质属性是变量,但因const显示常量int a = 10;本为变量,加上const则有了常属性,但不能作为常量使用

被其修饰后不可更改否则报错。

3.define标识的常量

在文件头部#define Max 1000

则其已被定义后续不可改

4.枚举常量

它的值从零开始,每次增加一,想要改的话必须从赋初值里改

ensum Sex

{

Male = 3;

}

enum 枚举类型名{常量1,常量2,常量3,…};
例如定义一个星期的枚举常量:enum Week {Mon,Tue,Wed,…};

这就定义了一个新的数据类型:Week。

Week数据类型来源于int类型(默认)。

Week类型的数据只能有7种取值,它们是:SUNDAY,MONDAY,TUESDAY……SATURDAY。

其中SUNDAY = 0,MONDAY = 1……SATURDAY = 6。也就是说,第1个枚举值代表0,第2个枚举值代表1,这样依次递增1。

不过,也可以在定义时,直接指定某个或某些枚举值的数值。比如,对于中国人,可能对于用0表示星期日不是很好接受,不如用7来表示星期天。这样我们需要的个值就是 1,2,3,4,5,6,7。可以这样定义:

enum Week {MONDAY = 1,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY};

我们希望星期一仍然从1开始,枚举类型默认枚举值从0开始,所以我们直接指定MONDAY等于1,这样,TUESDAY就将等于2,直接到SUNDAY等于7。
枚举值,我们就称为枚举常量,因为它一经定义以后,就不可再改变,以下用法是错误的!

TUESDAY = 10; //错误!我们不能改变一个枚举值的数值。

用枚举常量来完成表达今天是星期三:

Week today = TUESDAY;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值