关于字符的问题(C语言)

来源:百度知道 编辑:UC知道 时间:2024/09/21 08:45:59
这个是怎么回事啊 输入2 输出 66 (关键是其中的‘2’不理解)
(switch() 括号中的不是case 将要判断的么?)
#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”);
}

c = getchar()
c 是一个字符
2 是一个数字
'2' 是一个字符

switch 判断字符c - 字符2 的值

输入2 输出 66 是正确的

switch(c-‘2’)
{ case 0:
case 1:putchar(c+4);
case 2:putchar(c+4);break
因为输入是字符2,选择中就是‘2’-‘2’=0。case 0无输出,case 1那没有break退出switch语句, 所以继续进行下一个语句case 2
又c=2,所以输出66