复习课7 常量
  uUWKQE7Avyk4 2023年11月02日 51 0

一.导入

我们之前就说过生活中是有很多变化与不变的量的,我们将变化的量称为变量,将不变的量称为常量

常量在生活中也有很多,如:血型、性别(不考虑特殊情况)、身份证号,那么在C语言中有哪些常量呢?

二.C语言中常量的分类

字面常量

const修饰的常变量

#define定义的标识符常量

枚举常量

接下来我将为大家逐个进行演示这些常量的用法

三.常量的用法:

1.字面常量

其实字面常量很好理解,比如 520 3.14这些都是字面常量,接下来我将在编译器中写几个字面常量的用法,代码如下:

int main(void)
{
    520;     //整型常量
    3.14;    //浮点型常量
    'A';     //字符常量
    "hello"; //字符串常量
    return 0;
}

这也是C语言中较为简单的常量

2.const修饰的常变量

先问大家一个问题,这段代码执行后程序输出的值是多少:

#include<stdio.h>
int main(void)
{
    int a = 10;
    a = 20;
    printf("a=%d\n",a);
    return 0;
}

很显然输出的是20,虽然变量 a 在一开始初始化成了10,但是下面一行代码却将20赋给了a,所以a的值最终为20,程序运行结果如图所示:

复习课7 常量_字面常量

但是我们改一下上述代码,将:

int a =10;

改为:

const int a = 10;

其余代码保持不变,我们再次编译程序就会发现程序报错了,如图所示:

复习课7 常量_标识符_02

编译器告诉我们:无法分配给具有 const 类型的变量 a 也就说当这个变量被const修饰后这个变量的值不可以再改变了,所以我们将用const修饰的变量称为常变量

注意⚠️:这里变量虽然不可以被直接改变,具有常量的特性但是其本质依然是一个变量,在声明数组的时候如果用常变量来指定数组的大小是非法的!

示例:

int arr[10] = {0};   //合法
int i =10;
int arr[i] = {0};    //非法 禁止使用变量制定数组大小
const int i = 10;
int arr[i] = {0};    //非法 使用const修饰的常变量其本质依然是变量

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

当我们需要定义一个常量的时候我们可以这样子写:

#define PI 3.14

这样子我们就定义了一个标识符为PI,值为3.14的常量,我们可以在程序中来输出这个常量:

#include<stdio.h>
#define PI 3.14
int main(void)
{
printf("PI=%.2f\n",PI);
return 0;
}

由于3.14是浮点数,所以我们在使用printf()的时候需要将转义字符%d改成%f,这样就可以正常的输出了,程序运行结果如下:

复习课7 常量_标识符_03

我们也可以使用#define 来创建字符串常量,代码如下:

#define STR "abc"

我们可以使用printf()函数来输出字符串:

printf("STR=%s",STR);

作为标识符常量其值也是不可被改变的,如以下代码编译时就会报错:

#include<stdio.h>
#define NUM 500
int main(void)
{
NUM = 1000;
return 0;
}

复习课7 常量_字面常量_04

原因是:NUM是一个标识符常量不可被改变的

4.枚举常量

我们这里用三原色来作为枚举的对象,代码如下:

#include<stdio.h>
enum Color{
    RED,
    YELLOW,
    BLUE

};
int main(void)
{
enum Color a = RED;
return 0;
}

这里我们创建了一个变量a,用于代表RED,但是如果我们再去给变量a赋值程序就会出错,如图所示:

复习课7 常量_#define_05

                                                                                                        2023/9/18

                                                                                                         王起舟

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  JCxIn7AYxO9d   2023年11月02日   90   0   0 Go全局变量标识符
  Qgw4UHkx7saV   2023年11月02日   50   0   0 #include#define头文件
uUWKQE7Avyk4