ch-‘0’(字符变成面值等值的整数)
int n=0;char ch;
while((ch=getchar())!=‘\n’)
/*表达式中,
(ch=getchar())表示输入字符;
!=‘\n’表示不等于回车时循环执行*/
{
if(ch>=‘0’&&ch<=‘9’)
n=n*10+ch-‘0’;
}
/*循环体中,
(ch>=‘0’&&ch<=‘9’)表示输入0到9的个位数字符;
n*10表示每输入一个数,上一个数就进位;
ch-‘0’表示将输入的字符转换为面值相等的整数*/
printf(“%d”,n);
输入:1空2空3空4
输出:1234
~
的计算过程
n=n*10+ch-‘0’
n默认从0开始
输入1,即ch=“1”
n=0+‘1’-‘0’=49-48=1
输入2,即ch=“2”
n=1*10+‘2’-‘0’=10+50-48=12
输入3,即ch=“3”
n=12*10+‘3’-‘0’=120+3=123
输入4,即ch=“4”
n=123*10+‘4’-‘0’=1230+4=1234
~
ch(字符变成ASCll码值等值的整数)
int n=0;char ch;
while((ch=getchar())!=‘\n’)
{
if(ch>=‘0’&&ch<=‘9’)
n=n*10+ch;
/*此处将ch-‘0’变成ch,
就会发现只有-‘0’才可以将字符变成与面值相等的整数,
没有-‘0’就会直接取ASCLL码值,结果大不一样*/
}
printf(“%d”,n);
输入:1空2空3空4
输出:54562
~
计算过程
n=n*10+ch
n默认从0开始
输入1,即ch=“1”
n=0+‘1’=49
输入2,即ch=“2”
n=49*10+‘2’=490+50=540
输入3,即ch=“3”
n=540*10+‘3’=5400+51=5451
输入4,即ch=“4”
n=5451*10+‘4’=54510+52=54562
领取专属 10元无门槛券
私享最新 技术干货