两个大字符类型的最高有效位之和

时间:2019-01-23 13:55:08

标签: c arrays optimization char

我有两个数字,例如

char* N1;
char* N2;

N1 = "92345610172222";
N2 = "12351097654671";

我需要添加两个数字的MSD,即

9 +1 = 10

我通过类型转换和除数直到使用两个循环遇到一个数字来解决,求和并返回结果。

int sumMsd(char *N1, char *N2) {
    int one = (int)*N1;
    int two = (int)*N2;
    while (one >= 10)
        one /= 10;
    while (two >= 10)
        two /= 10;
    return one+two;
}

当int大小很大时,逻辑将失败。因此,我需要在不使用库函数的情况下优化解决方案。我正在寻找C语言的解决方案。

1 个答案:

答案 0 :(得分:2)

这应该有效。

int sumMsd(char *N1, char *N2) {
    return (N1[0] - '0') + (N2[0] - '0');
}

让N1的第一位为'3'。那么'3'-'0'为3,即它们的ASCII值之差。