//通过参数观察,我看到k
的结果是4,但是最终结果是程序完成后的123。为什么会这样?/
/谢谢您的回答。 我已经弄清楚了我以前的困惑。 实际上,这是一个在考试中询问输出的问题。我在考试中错了,因为我认为输出为1,但正确答案是123。 也许是造成指令不清楚的原因。/
#include <stdio.h>
int main()
{
int k;
scanf("%d", &k);
switch (k)
{
case 1: printf("%d", k++);
case 2: printf("%d", k++);
case 3: printf("%d", k++);
break;
default: printf("Full!");
}
return 0;
}
答案 0 :(得分:1)
您的代码中没有最终结果:k
之后没有使用switch
,因此它在调试器中的值没有意义。
您可以修改代码以打印k
的最终值,并看到1
,2
和3
都被转换为4
其他值保持不变。
#include <stdio.h>
int main() {
int k;
scanf("%d", &k);
switch (k) {
case 1: printf("%d\n", k++);
case 2: printf("%d\n", k++);
case 3: printf("%d\n", k++);
break;
default: printf("Full!\n");
break;
}
printf("%d\n", k);
return 0;
}
答案 1 :(得分:0)
您的代码中有两个错误:
为什么k++
不是k
?
每个break
都没有case
由于这些错误,如果您输入123
,则会得到1
。
我猜您只想打印输入,所以更正后的代码可能是:
#include <stdio.h>
int main()
{
int k;
scanf("%d", &k);
switch (k)
{
case 1: printf("%d", k);
break;
case 2: printf("%d", k);
break;
case 3: printf("%d", k);
break;
default: printf("Full!");
break;
}
return 0;
}