求助一个C语言问题 为什么在VC中老是提示我 warning C4101: 'c' : unreferenced local variable
#include<stdio.h>#defineAZ1.8#defineBZ273.16#defineCZ32.0voidTemp();voidmain(){double...
#include<stdio.h>
#define AZ 1.8
#define BZ 273.16
#define CZ 32.0
void Temp();
void main()
{
double f;
float c,k;
printf("Please input the temperature:\n");
scanf("%f",&f);
Temp();//调用函数
}
void Temp()
{
while(f>-169.4)
{
c=AZ*f+CZ;
k=c+BZ;
scanf("%f",&f);
printf("The three Temperature is:\n");
printf("%.2f is Fahrenheit,%.2f is Celsius,%.2f is Kelvin\n",f,c,k);
}
printf("Done\n");
} 写的是一个三种温度转换显示的 调试中不断显示 warning C4101: 'c' : unreferenced local variable c k f 都提示有这个问题 请求帮助 展开
#define AZ 1.8
#define BZ 273.16
#define CZ 32.0
void Temp();
void main()
{
double f;
float c,k;
printf("Please input the temperature:\n");
scanf("%f",&f);
Temp();//调用函数
}
void Temp()
{
while(f>-169.4)
{
c=AZ*f+CZ;
k=c+BZ;
scanf("%f",&f);
printf("The three Temperature is:\n");
printf("%.2f is Fahrenheit,%.2f is Celsius,%.2f is Kelvin\n",f,c,k);
}
printf("Done\n");
} 写的是一个三种温度转换显示的 调试中不断显示 warning C4101: 'c' : unreferenced local variable c k f 都提示有这个问题 请求帮助 展开
展开全部
警告的意思为:警告C4101:'e':未引用的局部变量
原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。
问题成功解决。
拓展资料
在计算机科学中,局部变量是拥有局部作用域的变量。这样的变量只能由声明它的函数或块中访问。在仅有两层可见性的程序设计语言中,局部变量对应全局变量;另一方面,许多类ALGOL语言允许任意多层的嵌套函数,各自拥有私有变量、函数、常量和类型。
大多数程序设计语言中,局部变量是直接存储在调用堆栈上的自动变量。即递归函数调用自己时,局部变量的每一份实例都在不同的地址空间中。于是在当前作用域对变量的声明、写入、读取都不会在其被声明的函数外产生副作用。
展开全部
我也是新手。写的不好请多指教。
unreferenced local variable 是未使用定义的变量,就是你定义了但是没有使用。
你的变量都定义在主函数里面了。Temp里面用到应该定义在Temp里面。函数没用到的就不用定义了。
还有,main里面你要求输入了f的值,temp里面又输入一次?随便在一个函数里面输入就行了。2次没意义。
还有,如果你程序是用while就是无限循环了。要break退出吧?而且存在两种情况(大于-169.4)用if和else比较好吧。
我再你的基础上修改了一下。你看看对不对?
#include<stdio.h>
#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");
}
unreferenced local variable 是未使用定义的变量,就是你定义了但是没有使用。
你的变量都定义在主函数里面了。Temp里面用到应该定义在Temp里面。函数没用到的就不用定义了。
还有,main里面你要求输入了f的值,temp里面又输入一次?随便在一个函数里面输入就行了。2次没意义。
还有,如果你程序是用while就是无限循环了。要break退出吧?而且存在两种情况(大于-169.4)用if和else比较好吧。
我再你的基础上修改了一下。你看看对不对?
#include<stdio.h>
#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");
}
更多追问追答
追问
为什么当我把f定义成double类型时 程序就无法正常运行
追答
我也是新手。。不知道说得对不对。。
double 应该要加个l。。就是lf指双精度?
也就是double对应lf float对应的f。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
main函数中定义的变量c k f,属于局部变量,作用范围在main函数内部。你的main函数内部只定义了c k f变量,而没有使用这三个变量。所以系统报警。unreferenced local variable就是指你定义了变量却没有使用它们。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
定义错了,你的三个变量都 是定义在主函数里,使用却在Temp函数里。
或者你可以把这三个变量的定义移到main函数的前面,就没问题了
或者你可以把这三个变量的定义移到main函数的前面,就没问题了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也是新手,用的指针亲测可用。
#include<stdio.h>
#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");
}
#include<stdio.h>
#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");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询