咱们一行一行看。
while(s[k+1])
// k=0,s[k+1] = '2',不是'\0',进入循环
{
k++;
// 现在k=1
if(k%2==0)
// k%2=1,跳过这个if
{
a=a+(s[k]-'0'+1);
continue;
}
a=a+(s[k]-'0');
// k=1,s[k]='2',s[k]-'0'=2,所以a=a+2=2
}
printf("k=%d a=%d\n",k,a);
}
关键在于char类型是可以做减法的,会使用字符的ASCII编号来相减。'0'是48号字符,'2'是第50号字符,所以相减的结果是2。