大家能帮我想一下这些步骤是为什么吗

#include<stdio.h>

int main(){
	
	char a[200] ,b[200];

	while(scanf("%s",a) != EOF){
		int answer[202] = {0};
		getchar();
		scanf("%s",b);
		
		int i,n, j =0 , k ;
		
		for(i = 0; a[i+1] !=0; ){
			i++;
		}
		for(n = 0; b[n+1] !=0;){
			n++;
		}
		for(;(i >= 0) || (n >= 0); i--, n--, j++){
			
			if(n < 0) {
				answer[j] +=  (a[i] - 48);
			}
			
			else if(i < 0) {
				answer[j] += (b[n] - 48) ;
			}
			
			else{
				answer[j] += (a[i] + b[n] - 48 - 48) ;
			}
			k = j;
			if(answer[j] >= 10){
				answer[j + 1] = (answer[j] / 10);
				answer[j] = (answer[j] % 10);
				k++ ;
			}
		}
		
		for(; k >= 0; k--){
			printf("%d",answer[k]);
		}
		printf("\n");
	}
	return 0;
}

题目是200位以内的大整数加法

请问 getchar()是为什么出现在那个位置,及为什么会有

else{
				answer[j] += (a[i] + b[n] - 48 - 48) ;

这种-48-48为什么要减去48

突然想明白了...直接回答你的问题叭:

  1. getchar()在这里是没用的,可以直接注释
  2. -48是因为char型数字对应的ASCII码数值是比自身大48的。你的输入其实是char型变量。如果你输入'0'的话,对应的ASCII码就是48。之后减去48之后就变成了整形的0。这个+=右边按照正常顺序应该写成((a[i]-48)+(b[n]-48))就好理解了