初学者切换案例操作始终是默认的

时间:2015-11-06 17:01:11

标签: c

我刚刚输入了一个开关案例代码..我不明白为什么当我按'1'时,它仍然是默认情况。

#include <stdio.h>

int main() {
    char c = 0;
    int x = 0, y = 0;

    printf("Please write 2 numbers:\n");
    scanf("%d %d", &x, &y);
    printf("Please choose an action from the math menu:\n\n1.add\n2.sub\n");
    scanf(" %c", &c);

    switch (c)
    {
    case 1:
        printf("%d + %d is %d\n", x, y, x+y);
        break;

    default: printf("Wrong value\n");
        break;
    }

    return 0;
}

3 个答案:

答案 0 :(得分:3)

c被声明为具有字符类型时,则输入1和2相应地为字符&#39; 1&#39;和&#39; 2&#39;。

所以写

switch (c)
{
case '1':
    printf("%d + %d is %d\n", x, y, x+y);
    break;

case '2':
    printf("%d - %d is %d\n", x, y, x-y);
    break;

default: printf("Wrong value\n");
    break;
}

答案 1 :(得分:1)

字符0到9实际上是ascii值48到57. switch((int)(c-48))可以工作。 express(int)(c-48)将ascii数字更改为整数。

答案 2 :(得分:0)

使用字符文字替代上一个答案:

switch(c)
{
  case '1':
    ...
    break;
  ...
 }

这使您甚至可以处理&#39; q&#39;等等。

在做&#39; q&#39;时,请记住区分大小写:

switch(c)
{
  case 'q':
  case 'Q':
    ... handle q
    break;
}

简而言之:您正在阅读一个字母,将其视为一个字符。