变量使用过程中异动
#include <stdio.h>float C_to_F(float a); /*将摄氏温度转换为华氏温度的函数*/
float F_to_C(float a); /*将华氏温度转换为摄氏温度的函数*/
#define LOWER -20
#define UPPER 300
#define STEP 20
#define NU (UPPER-LOWER)/STEP
main()
{
float F,C,tmp[NU];
int i=0,j=0,lower,upper=UPPER,step=STEP;
printf("\ttemperature converter from C to F\n");
for (lower=LOWER;lower<=UPPER;lower+=STEP)
{
C=lower;
F=C_to_F(C);
tmp[i]=F;
printf("\t%4.0f\t%4.0f\n",C,F);
i++;
}
printf("\ttemperature converter from F to C\n");
for (lower=LOWER;lower<=UPPER;lower+=STEP)
{
i--;
F=tmp[NU-i];
C=F_to_C(F);
printf("\t%4.0f\t%4.0f\n",F,C);
}
}
float C_to_F(float C)
{
float F;
F=9.0/5*C+32;
return F;
}
float F_to_C(float F)
{
float C;
C=5.0/9*(F-32);
return C;
}
如果上面的红色部分改成小写的变量upper和step,就不能得到正确答案。通过打印函数可以看到,本来该跳出的地方,即lower的值从300变到320,并始终维持在lower=320时,upper的值从300变到17423并始终维持在17423,step的值从20变到0,并始终维持在0。想不明白为什么upper和step的值都会变化呢?
使用的环境是TurboC 2.0,操作系统为win xp,在联想笔记本上运行。