scanf("%ld",&l);
printf ("l=%ld",l);
switch (l)
{
case'1':
XOR(&matrix1[10],&matrix2[10],m);
break;
case'2':
AND(&matrix1[10],&matrix2[10],m);
break;
default:
printf("\n\t\tWrong input");
}
当程序到达switch
时,无论我输入什么(无论是错还是右),程序都会一直显示按摩(输入错误),尽管我输入了正确的数字(1或2)
答案 0 :(得分:5)
从
更改案例标签case'1':
...
case'2':
...
到
case 1:
...
case 2:
...
说明:您的开关值是整数,而不是字符,因此您的案例标签需要整数常量,而不是字符常量
答案 1 :(得分:1)
您的案例应该是case 1
而不是case '1'
。
答案 2 :(得分:1)
'1'!= 1
注意:'1'接近60或类似的东西,'因为单引号意味着“使用char”(或它的ASCII代码)。尝试从您的交换机案例中删除'em:
scanf("%ld",&l); printf ("l=%ld",l); switch (l) { case 1: XOR(&matrix1[10],&matrix2[10],m); break; case 2: AND(&matrix1[10],&matrix2[10],m); break; default: printf("\n\t\tWrong input"); }
或者您可以将输入从数字更改为char:
scanf("%c", &l);
答案 3 :(得分:1)
但你不是在读一个角色,但你的情况就是角色。重写如下:
switch (l)
{
case 1:
XOR(&matrix1[10],&matrix2[10],m);
break;
case 2:
AND(&matrix1[10],&matrix2[10],m);
break;
default:
printf("\n\t\tWrong input");
}
答案 4 :(得分:0)
'1'
和1不一样。
答案 5 :(得分:0)
因为您的开关依赖于整数。而你正在接受一个字符串。你需要先通过atoi运行l。
答案 6 :(得分:0)
'1'
是一个字符,数字1的ASCII表示。改为使用plain 1。
case 1:
/*...*/
break;
答案 7 :(得分:0)
那是因为:
case '1':
与:
不同case 1:
第二个是你似乎期待的那个。