求助一个C语言问题 为啥在VC中老是提示我 warning C4101: 'c' : unreferenced local variable

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助一个C语言问题 为啥在VC中老是提示我 warning C4101: 'c' : unreferenced local variable相关的知识,希望对你有一定的参考价值。

#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 都提示有这个问题 请求帮助

警告的意思为:警告C4101:'e':未引用的局部变量

原因是局部变量的错误使用。你的 f,c,k都是在main()函数里面定义的,然而,你在使用这些变量时是在temp()函数里面,在某个函数里面定义的变量只能在此函数中使用,所以你会产生错误。解决办法为,将这些变量定义为全局变量。

问题成功解决。

拓展资料

在计算机科学中,局部变量是拥有局部作用域的变量。这样的变量只能由声明它的函数或块中访问。在仅有两层可见性的程序设计语言中,局部变量对应全局变量;另一方面,许多类ALGOL语言允许任意多层的嵌套函数,各自拥有私有变量、函数、常量和类型。

大多数程序设计语言中,局部变量是直接存储在调用堆栈上的自动变量。即递归函数调用自己时,局部变量的每一份实例都在不同的地址空间中。于是在当前作用域对变量的声明、写入、读取都不会在其被声明的函数外产生副作用。



参考技术A 我也是新手。写的不好请多指教。
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。。

追问

表示出不来额 如果用double定义 每次出来只能将f默认为0

本回答被提问者采纳
参考技术B main函数中定义的变量c k f,属于局部变量,作用范围在main函数内部。你的main函数内部只定义了c k f变量,而没有使用这三个变量。所以系统报警。unreferenced local variable就是指你定义了变量却没有使用它们。 参考技术C 定义错了,你的三个变量都 是定义在主函数里,使用却在Temp函数里。
或者你可以把这三个变量的定义移到main函数的前面,就没问题了
参考技术D 我也是新手,用的指针亲测可用。
#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");

我这个代码有啥问题,为啥老是提示我找不到mybatis.xml?

public void testSelAll() throws IOException //加载MyBatis核心配置文件 InputStream is=Resources.getResourceAsStream("mybatis.xml"); //构建SqlsessionFactory工厂对象 SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(is); //通过工厂打开Session SqlSession session=factory.openSession(); //通过session执行查询操作 List<User> list=session.selectList("com.bjsxt.mapper.UserMapper.selAll"); System.out.println(list); //关闭资源 session.close(); 下图是我的项目结构

参考技术A 没有配置工作环境,无法入载mybatis. xml文件。 参考技术B 文件名错了,程序中你写的是mybatis,文件却是mabatis

以上是关于求助一个C语言问题 为啥在VC中老是提示我 warning C4101: 'c' : unreferenced local variable的主要内容,如果未能解决你的问题,请参考以下文章

C语言初学,求任意四位数字个十百千位的和。老是提示指示符错误

为啥在VC++6.0下用C语言调用引用参数如:void Creat(SqList &L)总是提示&出错?

求助c语言大佬们,急! 为啥我多次调用函数,然而输出的时候只有第一层函数输出了,后几层的都没有输

LaTeX问题求助

为啥在网上找的一些c语言程序的代码在vc++6.0中编译总是出现错误?求指教

在VC++中用fopen