警告的意思为:警告C4101:'e':未引用的局部变量
原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。
问题成功解决。
拓展资料
在计算机科学中,局部变量是拥有局部作用域的变量。这样的变量只能由声明它的函数或块中访问。在仅有两层可见性的程序设计语言中,局部变量对应全局变量;另一方面,许多类ALGOL语言允许任意多层的嵌套函数,各自拥有私有变量、函数、常量和类型。
大多数程序设计语言中,局部变量是直接存储在调用堆栈上的自动变量。即递归函数调用自己时,局部变量的每一份实例都在不同的地址空间中。于是在当前作用域对变量的声明、写入、读取都不会在其被声明的函数外产生副作用。
我也是新手。写的不好请多指教。
unreferenced local variable 是未使用定义的变量,就是你定义了但是没有使用。
你的变量都定义在主函数里面了。Temp里面用到应该定义在Temp里面。函数没用到的就不用定义了。
还有,main里面你要求输入了f的值,temp里面又输入一次?随便在一个函数里面输入就行了。2次没意义。
还有,如果你程序是用while就是无限循环了。要break退出吧?而且存在两种情况(大于-169.4)用if和else比较好吧。
我再你的基础上修改了一下。你看看对不对?
#include
#define AZ 1.8
#define BZ 273.16
#define CZ 32.0
void Temp();
void main()
{
printf("Please input the temperature:\n");
Temp();//调用函数
}
void Temp()
{
float f;
double c,k;
scanf("%f",&f);
if(f>-169.4)
{
c=AZ*f+CZ;
k=c+BZ;
printf("The three Temperature is:%f\n",f);
printf("%.2f is Fahrenheit.\n%.2f is Celsius.\n%.2f is Kelvin.\n",f ,c ,k );
}
else printf("Done\n");
}
main函数中定义的变量c k f,属于局部变量,作用范围在main函数内部。你的main函数内部只定义了c k f变量,而没有使用这三个变量。所以系统报警。unreferenced local variable就是指你定义了变量却没有使用它们。
定义错了,你的三个变量都 是定义在主函数里,使用却在Temp函数里。
或者你可以把这三个变量的定义移到main函数的前面,就没问题了
我也是新手,用的指针亲测可用。
#include
#define AZ 1.8
#define BZ 273.16
#define CZ 32.0
void Temp(float *);
void main()
{
float f;
printf("Please input the temperature:\n");
scanf("%f",&f);
Temp(&f);//调用函数
}
void Temp(float *f)
{
float g=*f;
float c,k;
if(g>-169.4)
{
c=AZ*g+CZ;
k=c+BZ;
printf("The three Temperature is:\n");
printf("%.2fisFahrenheit\n%.2fis Celsius\n%.2f is Kelvin\n",g,c,k);
}
else
printf("Done\n");
}