主程序代码:
int N,M,X,Y,Z;
int main(void){
N=Read();M=Read();
for(register int i=1;i<=N;i++){
char C;
cin>>C;//这里是不同之处
A[i]=C-'0';
}
Do.Tree_Build(1,1,N);
for(register int i=1;i<=M;i++){
Z=Read(),X=Read(),Y=Read();
if(Z==0)Do.AddSeg(1,X,Y);
if(Z==1)printf("%d\n",Do.SumSeg(1,X,Y));
}
return 0;
}
但如果我写成:
int N,M,X,Y,Z;
int main(void){
N=Read();M=Read();
for(register int i=1;i<=N;i++){
char C=getchar();//这里是不同之处
A[i]=C-'0';
}
Do.Tree_Build(1,1,N);
for(register int i=1;i<=M;i++){
Z=Read(),X=Read(),Y=Read();
if(Z==0)Do.AddSeg(1,X,Y);
if(Z==1)printf("%d\n",Do.SumSeg(1,X,Y));
}
return 0;
}
Z就会变成一些奇怪的值,Z和getchar到底有何渊源?