第1个回答 2012-11-02
switch (ch-'2') //第一个2 那么ch-'2' = 0;
{ case 0: //所以case 0: 执行.执行完了,没有break;语句。故继续下一条语句,case 1:
case 1: cout<<(char)(ch+4); //执行case 1:,输出 字符 ‘6’。同理没有break;继续下一条
case 2: cout<<(char)(ch+4); break; //这里又是输出字符‘6’,接着break.退出了switch语句。
case 3: cout<<(char)(ch+3) ;
default : cout<<(char)(ch+2); break; }
其他的一样分析就得出了:66897
第2个回答 2012-11-02
switch (ch-'2')
{ case 0:
case 1: cout<<(char)(ch+4); //若结果为1,这个执行过后 不会跳出 执行下一句
case 2: cout<<(char)(ch+4); break; //结果为2 执行后跳出
case 3: cout<<(char)(ch+3) ;
default : cout<<(char)(ch+2); break; //这两句跟上面执行方式相同
}
switch 下面的case 如果不跟break的话 会一直执行下去 直到遇到break 或判断结束
当 ch-'2' 为 0的时候 程序执行 case 0、case 1 、case 2
当 ch-'2' 为 1的时候 程序执行 case 1 、case 2
当 ch-'2' 为 2的时候 程序执行 case 2
当 ch-'2' 为 3的时候 程序执行 case 3、default
当 ch-'2' 为 其他的时候 程序执行 default
ch-'2' 其实是 两个ascII码在做减运算
例如 输入'2' ascII为50
则 ch-'2' 就相当于 50-50 结果为0