2 xiaoji2015 xiaoji2015 于 2016.01.18 18:54 提问

error: syntax error before "int"
c

#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,%g\n",m-n,7*n-z);
printf("1\n");

}
else
printf("gg\n");
}
else
printf("gg\n");
}

5个回答

caozhy
caozhy   Ds   Rxr 2016.01.18 19:01

修改为
if((float)(int)n==n)
可以通过编译

但是记住,这种比较不可靠,应该两数相减取绝对值小于某个极小的值来代替相等判断

linkshan
linkshan   2016.01.18 20:23

尽量不要用这样的形式,毕竟整型使用原码、反码、补码进行编码,
而浮点型使用IEEE754进行编码,所以强制转换基本上是没有任何意思的。建议使用c里面的math库来进行取整操作。
floor(value)向下取整
ceil(value)向上取整

qq_27183003
qq_27183003   Ds   Rxr 2016.01.18 22:56
 if(int(n)==n)
    修改为:
    if(fabs(n-floor(n))<0.0001)//需要#include <math.h>
xiaoji2015
xiaoji2015   2016.01.18 18:55

图片说明

91program
91program   Ds   Rxr 2016.01.18 19:29

此段代码,放在 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,%g\n",m-n,7*n-z);
            printf("1\n");
        }
        else
            printf("gg\n");
    }
    else
        printf("gg\n");

    return 0;
}
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!