[求助]大数字相加问题?
为了满足比较在的数学相加,我用一个数组来保存每一个无数,代码如下:
#include <iostream>
#include <fstream>
#include <string>
#include <conio.h>
using namespace std;
#define M 500
void main()
{
ifstream in("Text.txt");
if(in.fail())
{
cerr<<"Error to open file!"<<endl;
exit(1);
}
char ch[M];
in.getline(ch,M);
char ch2[M];
in.getline(ch2,M);
char ch3[M];
memset(ch3,0,M);
int m,n;
m=strlen(ch)-1;
n=strlen(ch2)-1;
for(int i=0;i<=m;i++)
ch3[i]=ch[i];
while(m>=0&&n>=0)
itoa((atoi(&ch[m])+atoi(&ch2[n--])),&ch3[m--],10);
cout<<ch<<endl<<ch2<<endl<<ch3<<endl;
system("Pause");
}
问题是:它自动的完成相加的功能,但我是用一个字符数组来存储每一个数字的,我就不太明白了,为什么它就能满足懑十就自动进位的效果,比如我的数字是:
500000000000000000000000123456
2654
结果为:500000000000000000000000126110
这怎么解释啊?
我以为的输入结果应为:
50000000000000000000005101010