说说 C 语言的符号常量

假设有一个英里转换为公里的程序:

#include <stdio.h>

/* print Mile to Kilometre table*/
main() {
    float mile, kilometre;

    int lower = 0;//lower limit
    int upper = 1000;//upper limit
    int step = 30;//step size

    printf("Mile Kilometre\n");
    mile = lower;
    while (mile <= upper) {
        kilometre = 1.61 * mile;
        printf("%3.0f     %6.1f\n", mile, kilometre);
        mile = mile + step;
    }
}

运行结果:
Mile Kilometre
0 0.0
30 48.3
60 96.6
90 144.9
120 193.2

这段程序本身逻辑没什么问题,只是可以进一步优化,比如使用 #define 指令来定义 lower 、upper 、step 。使用 #define 指令定义的常量叫做符号常量。

#define 指令语法为:

#define 常量名 替换文本

定义好符号常量之后,程序中所有出现在 #define 中定义的常量名,都会被替换为相应的文本。常量名可以是以字母打头的字母和数字序列;替换文本可以是任何字符序列。

常量名通常用大写字母拼写,很多编程语言(Java、Python)都有这样的约定。因为这样与用小写字母拼写的变量名区别开来。

上述程序改为符号常量形式的版本为:

#include <stdio.h>

/* print Mile to Kilometre table*/

#define LOWER 0 //lower limit
#define UPPER 1000 //upper limit
#define STEP 30 //step size

main() {
    float mile, kilometre;

    printf("Mile Kilometre\n");
    mile = LOWER;
    while (mile <= UPPER) {
        kilometre = 1.61 * mile;
        printf("%3.0f     %6.1f\n", mile, kilometre);
        mile = mile + STEP;
    }
}

输入结果与上例相同。

注意:#define 指令行的末尾没有分号。

发布了607 篇原创文章 · 获赞 682 · 访问量 90万+

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/104072187