IF - 条件与char比较不在C中工作

时间:2013-04-06 15:13:12

标签: c

我真的不知道这是什么错误。这似乎是对的,不是吗?

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

int main(int argc, char *argv[])
{
   char op;

   printf("Type in operator (+,-,/,*):");
   scanf("%i",&op);

   if(op == '+')
   {
      printf("You entered a plus");
   }

   system("pause"); 
   return 0;
}

我希望它在输入+时打印“你输入了一个加号”。 它没有。

我对C.有点新手 提前致谢:)

3 个答案:

答案 0 :(得分:4)

if条件没问题。问题是scanf()格式,应为

scanf("%c",&op);

%i读取整数,而%c读取char。)

答案 1 :(得分:0)

scanf("%i", &op);

你期待一个整数。因此,当您编写一个字符并按<Enter>时,scanf会失败(您可以检查其返回值以查看它):

if (scanf("%i", &op) != 1)
{
    /* Treat the error. */
}

%c中使用相当scanf格式来阅读字符:

scanf("%c", &op);

答案 2 :(得分:0)

您的问题是格式说明符错误

//In scanf instead of 
scanf("%i",&op);
// you have to provide 
scanf("%c",&op);

%i use for reading integer whereas %c use for reading char.