C++ 如何用数学方法组合数字?

C++ 如何用数学方法组合数字?,c++,C++,有一种方法可以处理十进制数 int64_t a = 144; int64_t b = 5; a = 10 * a + b; // a = 1445 但是如果b大于数字9,例如45或147,那么该方法不起作用 如何使它与任何数字或至少三位数字一起工作。您可以使用循环: int64_t intConcat(int64_t a, int64_t b) { if (b == 0) { return a * 10; } int64_t t = b;

有一种方法可以处理十进制数

int64_t a = 144;

int64_t b = 5;

a = 10 * a + b;

// a = 1445
但是如果b大于数字9,例如45或147,那么该方法不起作用

如何使它与任何数字或至少三位数字一起工作。

您可以使用循环:

int64_t intConcat(int64_t a, int64_t b)
{
    if (b == 0)
    {
        return a * 10;
    }
    int64_t t = b;
    while (t != 0)
    {
        a = a * 10;
        t = t / 10;
    }
    return a + b;
}
您可以使用循环:

int64_t intConcat(int64_t a, int64_t b)
{
    if (b == 0)
    {
        return a * 10;
    }
    int64_t t = b;
    while (t != 0)
    {
        a = a * 10;
        t = t / 10;
    }
    return a + b;
}

尽管有更好的方法来实现这一点,但这里有一个可能的解决方案:

for (int64_t tmp = b; tmp > 0; tmp /= 10)
    a *= 10;
a += b;

但是要注意溢出。

尽管有更好的方法来实现这一点,但这里有一个可能的解决方案:

for (int64_t tmp = b; tmp > 0; tmp /= 10)
    a *= 10;
a += b;

但是要注意溢出。

使用十进制对数定义b的长度,然后将a乘以10次幂长度ba=10^数字的个数\U\U\U\U*a+b如果其中一个数字为负数,结果应该是什么?使用十进制对数定义b的长度,然后将a乘以10次幂长度ba=10^数字的个数\U\U\U\U\U\U*a+b应该是什么如果其中一个数字为负数,结果如何?