这个为什么不可以呢 是用longlong有问题么 那么应该怎么写呢
希望各位指点
大整数加法了解一下
#include <stdio.h>
#include <string.h>
#define MAX_LEN 1024
char lhs[MAX_LEN];
char rhs[MAX_LEN];
char result[MAX_LEN];
int reverse(char *str);
void add(char *lhs, char *rhs, char *result);
int main()
{
scanf("%s %s", lhs, rhs);
add(lhs, rhs, result);
printf("%s\n", result);
return 0;
}
int reverse(char *str)
{
const int len = (int)strlen(str);
char temp;
for (int i = 0; i != len / 2; i++)
{
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
return len;
}
void add(char *lhs, char *rhs, char *result)
{
int lhsLen = reverse(lhs);
int rhsLen = reverse(rhs);
int carry = 0;
const int ten = 10;
for (int i = 0, j = 0, sum; i < lhsLen || j < rhsLen; i++, j++)
{
sum = (i < lhsLen ? lhs[i] - '0' : 0) +
(j < rhsLen ? rhs[j] - '0' : 0) + carry;
result[i] = (char)(sum % ten + '0');
carry = sum / ten;
}
int maxLen = lhsLen > rhsLen ? lhsLen : rhsLen;
if (carry > 0)
{
result[maxLen++] = (char)(carry + '0');
}
result[maxLen] = '\0';
reverse(result);
}