"赋值使用指针生成整数而不进行强制转换转换"

时间:2018-02-16 16:25:40

标签: c syntax-error

我是c语言的新手,我想制作一个计算器,所以我写了这段代码:

#include<stdio.h>
void main()
{
    int x,y,z;
    char m;
    printf("enter the first number");
    scanf("%d",&x);
    printf("enter the second number");
    scanf("%d",&y);
    printf("enter the math operator");
    scanf("%c",&m);
if (m == '+')
{
    z=x+y;
    printf("the answer is %d",z);

}
else if(m == '-')
{
    z=x-y;
    printf("the answer is %d",z);
}
else
{
    printf("wrong symbol");
}
    }

当我运行程序时,它会忽略

scanf("%c",&m);

if (m == '+')
{
    z=x+y;
    printf("the answer is %d",z);

}
else if(m == '-')
{
    z=x-y;
    printf("the answer is %d",z);
}

它将直接进入

else
    {
        printf("wrong symbol");
    }

它显示如下:https://i.imgur.com/QQF8ftg.jpg 请帮忙。

1 个答案:

答案 0 :(得分:0)

您只需要刷新流条目stdin,因为当您调用scanf("%c",&m);时,某些char仍然在stdin中。因为它只查找一个char ...它直接获取stdin中的第一个char('\n')。

在调用scanf之前插入此可移植代码以刷新stdin:

int c;
while((c = getchar()) != '\n' && c != EOF);

希望这有帮助!