ch1是读进1,读进时当作字符处理,n1是整数型,将字符型1减去带单引号的0,即字符型的0,是将1和0的ASCII码相减,如果你有一定的编程常识一定知道1和0的ASCII码是相差1,因为ASCII里面0-9是按顺序编码的。像a与b也是如果b-a也会等于1,也以n1得到的是整数型的1。同理,后面的ch2-'0'会等于2,n1*10当然就等于10,10+2当然等于12,n2是在先前定义是整数型的,结果就自动转化成整数型,所以输入参数用的是%d,即输出十进制数。
n1 = ch1 - '0' = '1' - '0' =1
n2 = 1*10+(ch2-'0') = 10+('2' - '0') =10+2=12
运行后:
ch1='1';
->n1=ch1-‘0'='1'-'0'=1
ch2='2'
->n2=n1*10+(ch2-‘0’)=1*10+('2'-'0')=12
输出时是10进制输出,为12
这是主要是考字符的ASCII码的运算.