操作员不在switch语句中工作

时间:2018-04-05 14:32:18

标签: c switch-statement

这是我的代码,但在输入输入后,每次都会发出默认声明。请帮助。我是C的初学者。 它没有给出结果。

 #include <stdio.h>
 #include <stdlib.h>
 #include <conio.h>

int main()
{
    int a;
    int b;
    char op;
    printf ("Enter first number: ");
    scanf ("%d", & a );
    printf ("Enter second number: ");
    scanf ("%d", & b );
    printf ("Enter the operator: ");
    scanf ("%s", op );
    switch(op)
    {
         case '+' : 
                       printf("Sum is %d", a+b );
         break;
         case '-' : 
                       printf("Difference is %d", a-b );
         break;
         case '*' : 
                       printf("Product is %d", a*b );
         break;
         case '/' : 
                       printf("Quotient is %d", a/b );
         break;
         default : 
                       printf("Wrong operator used!");
         break;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

此:

scanf ("%s", op );

是未定义的行为,opchar%s需要char *(并且如果您希望实际存储,则需要多char个空间你不需要的字符串。

你的意思是:

scanf(" %c", &op); // Note the space before '%', this matters.

也总是检查返回值,I / O可能会失败。