详解详解C语言中的符号常量、变量与算术表达式语言中的符号常量、变量与算术表达式
C语言中的符号常量语言中的符号常量
在结束讨论温度转换程序前,我们再来看一下符号常量。在程序中使用 300、20 等类似的“幻数”并不是一个好习惯,它们几乎
无法向以后阅读该程序的人提供什么信息,而且使程序的修改变得更加困难。处理这种幻数的一种方法是赋予它们有意义的名
字。#define 指令可以把符号名(或称为符号常量)定义为一个特定的字符串:
#define 名字 替换文本
在该定义之后,程序中出现的所有在 #define 中定义的名字(既没有用引号引起来,也不是其它名字的一部分)都将用相应的
替换文本替换。其中,名字与普通变量名的形式相同:它们都是以字母打头的字母和数字序列;替换文本可以是任何字符序
列,而不仅限于数字。
在该定义之后,程序中出现的所有在 #define 中定义的名字(既没有用引号引起来,也不是其它名字的一部分)都将用相应的
替换文本替换。其中,名字与普通变量名的形式相同:它们都是以字母打头的字母和数字序列;替换文本可以是任何字符序
列,而不仅限于数字。
#include <stdio.h>
#define LOWER 0 /* lower limit of table */
#define UPPER 300 /* upper limit */
#define STEP 20 /* step size */
/* print Fahrenheit-Celsius table */
main()
{
int fahr;
for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
printf("%3d %6.1f", fahr, (5.0/9.0)*(fahr-32));
}
其中,LOWER、UPPER 与 STEP 都是符号常量,而非变量,因此不需要出现在声明中。符号常量名通常用大写字母拼写,
这样可以很容易与用小写字母拼写的变量名相区别。注意,#define 指令行的末尾没有分号。
变量与算术表达式变量与算术表达式
我们来看下一个程序,使用公式℃=(5/9)(℉-32)打印下列华氏温度与摄氏温度对照表:
0 -17
20 -6
40 4
60 15
80 26
100 37
120 48
140 60
160 71
180 82
200 93
220 104
240 115
260 126
280 137
300 148
此程序中仍然只包括一个名为 main 的函数定义。它比前面打印“hello, world”的程序长一些,但并不复杂。这个程序中引入了
一些新的概念,包括注释、声明、变量、算术表达式、循环以及格式化输出。该程序如下所示:
#include <stdio.h>
/* 当 fahr=0,20,… ,300 时,分别打印华氏温度与摄氏温度对照表 */
main()
{
int i;
int fahr, celsius;
int lower, upper, step;
lower = 0; /* 温度表的下限 */
upper = 300; /* 温度表的上限 */
step = 20; /* 步长 */
fahr = lower;
while (fahr <= upper) {
celsius = 5 * (fahr-32) / 9;