问题描述
- error: syntax error before "int"
-
#include
main()
{
float x,y,z,m,n;
scanf("%f,%f,%f",&x,&y,&z);
n=(x+z)/9;
if(int(n)==n)
{
m=((x+z)/9+y)/2;
if(int(m)==m)
{
printf("%g,%gn",m-n,7*n-z);
printf("1n");}
else
printf("ggn");
}
else
printf("ggn");
}
解决方案
修改为
if((float)(int)n==n)
可以通过编译
但是记住,这种比较不可靠,应该两数相减取绝对值小于某个极小的值来代替相等判断
解决方案二:
尽量不要用这样的形式,毕竟整型使用原码、反码、补码进行编码,
而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的。建议使用c里面的math库来进行取整操作。
floor(value)向下取整
ceil(value)向上取整
解决方案三:
if(int(n)==n)
修改为:
if(fabs(n-floor(n))<0.0001)//需要#include <math.h>
解决方案五:
此段代码,放在 VS2008 中编译是没有错误的。
int mainTest() // 不使用 main
{
float x,y,z,m,n;
scanf("%f,%f,%f",&x,&y,&z);
n=(x+z)/9;
if(int(n)==n)
{
m=((x+z)/9+y)/2;
if(int(m)==m)
{
printf("%g,%gn",m-n,7*n-z);
printf("1n");
}
else
printf("ggn");
}
else
printf("ggn");
return 0;
}
时间: 2024-10-01 22:57:37