C 常量

在 C 语言中,常量指的是值一个不能改变的量。也就是说,常量的值从定义开始就是固定的,一直到程序结束都不会改变。

常量,形象来说就像千百年来约定俗成的名称。这个名称是定下来的,而不能随便改变。比如我们都叫做 “人”,总不能把你叫做 “猪”,对吧?

C 常量语法

在C 语言中,如果想要定义一个常量,我们有 2 种实现方式:① 使用 const 关键字; ② 使用 #define 命令。

语法:

// 方式1
const 类型 常量名=值;

// 方式2
#define 常量名 值

说明:

#define 是一条预处理命令,也叫做 “宏定义命令”。在 C 语言中,预处理命令都是以 “#” 开头的。实际上,我们之前接触的 #include <stdio.h> 也是一条预处理命令。

在 C 语言中,常量一般有着特殊用途,所以命名时一般都是全部使用大写字母。当然我们使用小写字母或其他变量名也是可以的,只是说并不推荐这样去做而已。

注意:

  • 使用 const 关键字定义的常量具有特定的数据类型,而使用 #define 定义的常量本质上是在预处理阶段进行文本替换,没有类型信息。
  • const 常量通常具有局部作用域(在声明它的代码块内有效),而 #define 定义的常量作用域更广,从定义处开始到文件结束。

C 常量示例

接下来,我们通过几个简单的例子来讲解一下 C 语言常量是如何使用的。

示例 1:使用 const 定义 C 常量

#include <stdio.h>

int main(void)
{
    const int YEAR = 2030;
    printf("%d", YEAR);
    return 0;
}

运行结果如下。

2030

分析:

常量和变量不一样,变量的值是可以被修改的,但常量的值是不允许修改的(要不然怎么叫常量呢,对吧)。如果我们尝试去修改一个常量的值,那么编译时就会报错。

#include <stdio.h>

int main(void)
{
    const int YEAR = 2030;
    YEAR = 2077;        // 尝试将 YEAR 的值修改成 2077,则编译报错
    printf("%d", YEAR);
    return 0;
}

示例 2:使用 #define 定义 C 常量

#include <stdio.h>
#define YEAR 2030      // 注意,末尾处是没有分号的

int main(void)
{
    printf("%d", YEAR);
    return 0;
}

运行结果如下。

2030

分析:

凡是预处理命令,末尾处一定不要加上分号,否则就会报错。这是因为 #define 实现的是文本替换,如果你写成 #define YEAR 2030;(带分号),那么代码里的 printf("%d", YEAR); 会被替换成 printf("%d", 2030;);。这样会在编译阶段导致语法错误(因为括号里多了一个分号)。

对于上面例子来说,在编译之前,预处理器会将代码中所有出现的 YEAR 替换为 2030。

注意: 如果想要定义一个 C 常量,我们更推荐使用 const 来定义,而不是使用 #define 来定义。这是因为 const 定义的变量是有类型的,编译时可以进行类型检查。

上一篇: C 变量

下一篇: C 关键字

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号