说说 C 语言的符号常量
2020-01-22 本文已影响0人
deniro
假设有一个英里转换为公里的程序:
#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 指令行的末尾没有分号。