C语言程序中有个错误找了半天不知道该怎么改~~~~~求解~~~~~~~下面是程序的图片

如题所述

这是一个警告错误,不影响编译执行。
因为在VC6下,默认的浮点数类型是双精度double类型,因此中间运算会使用double,而接收是使用了一个float 的变量C追问

可是……它确实影响编译执行了……这个肿么改~~~

追答

兄弟,那是另一个错误好吧。
你的工程里面应该是有了多个.c文件,并且每个文件里面都有main函数。
删除其他.c文件,只保留一个当前的(在界面左侧FileView里面删除即可)

追问

好的吧,我的错。。。我两个程序一起的……非常感谢你兄弟现在没事了。。 不过纠正一下,其实那个兄弟可以换成姐妹的(坏笑Ing~)

追答

呃。。。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-24
这个warning可能影响精度。
涉及计算机组成原理了,计算机存储方式为二进制,占4字节。转化为十进制后自然有的数字表达不了。
另外,一般不推荐用float,精度差是一方面,另一方面是在c++中小数(如0.1)是默认为double的,你不可以这样子:float x=78.6;编译会报错,warning C4305: 'initializing' : truncation from 'const double ' to 'float '
原因:
在C/C++中,VC++和LINUX都是,上述语句等号右边78.6,我们以为它是个float,但是编译器却把它认为是个double(因为小数默认是double),所以要报这个warning。
打印出来你会发现x的值是 78.599998

把高精度的变量赋值给低精度的变量,可能会有精度丢失。

通常的做法,经常使用double,而不喜欢使用float。追问

可是……我是按课本上编写的……一字不落。。。T.T不是我想用float的……那这个该肿么办,还是没看懂要怎么改……

追答

改成double F,C;
scanf("lf",&F);
printf("%lf",F);
这样就避免warning;

另外那个执行link.exe错误,就是你有两个文件含有main函数。

追问

居然这样也可以。。。鼓掌~~~好腻害~~~

第2个回答  2013-10-24
这个错误好像是说你在一个工程里面出现了两个main函数,重复了。把你后面的窗口关闭了,只打开这一个C文件再编译试试
相似回答