关于C++小程序

谭浩强C++书上的一个例子
#include<iostream.h>
void main()
{ char ch;
while(cin.get(ch)&&ch!='\n')
switch (ch-'2')
{ case 0:
case 1: cout<<(char)(ch+4);
case 2: cout<<(char)(ch+4); break;
case 3: cout<<(char)(ch+3) ;
default : cout<<(char)(ch+2); break;
}
cout<<endl;
键盘输入2473,输出结果668977
没看明白,2473代表的char是啥,ch-‘2’又是怎么算的,668977又是ch+几呢。
望大神顺手帮忙解读下,多谢!

这个例子是表现字符相减和break语句在switch-case语句中的作用,那就是只有遇到break语句时,程序才会从switch-case语句中退出.
下面我们逐个分析输入2473,是怎么产生668977的结果的.
当输入2时,是char类型所以ch-'2'='2'-'2'等于0 所以执行case 0语句,因为没有遇到break语句,继续执行case 1语句,打印ch+4='2'+4输出字符6,因为没有遇到break语句,继续执行case 2语句,打印ch+4='2'+4输出字符6,遇到break语句,退出switch-case语句,进行下一次循环.
当输入4时,ch-'2'='4'-'2'等于2,所以执行case 2语句,打印ch+4='4'+4输出字符8,遇到break语句,退出switch-case语句,进行下一次循环.
当输入7时,ch-'2'='7'-'2'等于5,所以执行default语句,打印ch+2='7'+2输出字符9,遇到break语句,退出switch-case语句,进行下一次循环.
当输入3时,ch-'2'='3'-'2'等于1,所以执行case 1语句,打印ch+4='3'+4输出字符7,因为没有遇到break语句,继续执行case 2语句,打印ch+4='3'+4输出字符7,遇到break语句,退出switch-case语句,进行下一次循环.
当输入回车换行符时,while循环终止,打印endl换行,退出C++程序.
综上所述,输入2473,输出就是668977了.
温馨提示:答案为网友推荐,仅供参考
相似回答