为什么同样的程序vc ++和tc++运行的结果不一样

来源:百度知道 编辑:UC知道 时间:2024/06/04 20:11:52
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,s,area;
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
{
s=1/2*(a+b+c);
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area=%6.2f\n",area);
}
else
printf("it is not correct\n");
}
Tc++可以正常运行,而VC++不 能正常运行,而是说warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data

结果不一样很正常
C语言某些问题在ANSI C中并没有明确规定
因此各个编译器都有不同的编译方法

课本上一般都以TC的结果为正确答案

首先

warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data

这个是个编译警告,不影响程序的编译和执行。

其次,这个警告说的是 double 强制转换为 float 类型时可能丢失数据(也就是说可能损失精度)

你可以把出错的行加个强制类型转换,或者加一句

#pragma warning(disable:4244) 都可以去掉这个警告。

这个很正常,c这种语言就是这样的。我记得我当年编程的时候就经常出现这种问题。你可以用VS 2005,这个环境对c的支持好些。不过太大了,作为学习没必要。