黑马程序员技术交流社区

标题: 学习C语言,switch问题。 [打印本页]

作者: moon_H    时间: 2015-2-22 23:49
标题: 学习C语言,switch问题。
#include<stdio.h>
main()
{
int c;
while((c=getchar())!='\n')
{
switch(c-'2')
{
case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break;
case 3:putchar(c+3);
default:putchar(c+2);break;
}
}
printf("\n");
}
从第一列开始输入数据:2473后回车,程序输出结果是
668977为什么呢?
作者: superdite    时间: 2015-2-23 10:10
1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break,结束。
作者: superdite    时间: 2015-2-23 10:14
superdite 发表于 2015-2-23 10:10
1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break ...

1、输入2,c-'2'=0,执行case 0,继续执行case 1,输出6,没有break,所以继续case 2,再输出第二个6,遇到break,结束。
2、输入4,c-'2'=2,执行case 2,输出8,遇到break,结束。
3、输入7,c-'2'=5,执行default,输出9,遇到break,结束。
4、输入3,c-'2'=1,执行case 1,输出7,所以继续case 2,再输出第二个7,遇到break,结束。

所以输出的是668977




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2