我刚刚输入了一个开关案例代码..我不明白为什么当我按'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;
}
答案 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;
}
简而言之:您正在阅读一个字母,将其视为一个字符。