不怕switch,就怕没有break的switch!
公众号:C语言编程技术分享
一、先找茬儿
有这么个练习,说让你输入一个数字字符,再输出来,而且要用switch来实现。
我是这么写的,如下:
#include <stdio.h>
#include <string.h>
int main()
{
char var;
printf("请输入一个字符: ");
scanf("%c", &var);
switch(var)
{
case '1':
printf("1\n", var);
case '2':
printf("2\n", var);
default:
printf("\n");
}
return 0;
}
来,运行一把,如下:
呦呵,这咋回事儿,我输入字符1,输出倒是输出字符1,咋还买一送一多输出了个字符2?
小伙伴们先来找找茬儿,看看哪里错了?
二、茬儿解析
我输入字符1后,程序执行完第13行 printf("1\n", var); 后,会继续从第14行 case '2': 开始执行呀,可不就输出字符2了嘛。13行的printf后没有break呀,可不就继续执行第14行嘛!
其实这也是C语言初学者经常会犯的一个错误,就是switch-case中忘记加break,导致整个程序的逻辑错了!
三、修正茬儿
加个break就行啦,小伙伴们可以自己试试。有问题可以留言哦!