如何在C追加一个整数(一个整数)++(How To Append an Integer (with

2019-09-22 01:47发布

我想知道是否有人能告诉我如何追加在C ++中的整数(另一整)。 基本上,如果我有这样一个int值67,我怎么会用4号追加这么整数现在是674? 提前致谢!

Answer 1:

第一个十繁衍的第二位数字电源,并添加其他。

实施例:63和5

63*10=630
630+5 =635

实施例:75和34

75*100=7500
7500+34=7534
int i1=75;
int i2=34;
int dn=ceil(log10(i2+0.001));     //0.001 is for exact 10, exact 100, ...
int i3=i1*ceil(pow(10,dn)); <---- because pow would give 99.999999(for some optimization modes)
i3+=i2;

编辑:字符串版本需要2的int STR转换(这是慢)和1个字符串连接(这是不快)和1个STR为int转换(这是慢)。 上部转换需要2次加法,1对数,2个天花板,1个电源,1个相乘所有这些都可能在CPU进行不接触主存用于获取/子步骤组数据肯定是潜伏期小于字符串版本。 如果3-4字符串由编译器设计存储在SSE寄存器,然后将两者争夺的性能。 因为当一个要忙着计算“功率”的功能,其他是从SSE忙提取字符串,并通过一个把它必要的寄存器之一,并构建在另一个寄存器通过启动加法和乘法。 电源(10,x)函数可以交易10 * 10 * 10 .... X次,纯数学版本再次变快。

如果是可读性,你需要,的EQ-答案是最好的海事组织。



Answer 2:

int appended = std::stoi(std::to_string(i1) + std::to_string(i2));
// error checking left as an exercise


Answer 3:

#include <iostream>
#include <string>

int appendDigit(int base, int append) {
   std::string sBase = std::to_string(base);
   std::string sAppend = std::to_string(append);
   std::string result = sBase + sAppend;
   return std::stoi(result);

}

int main() {
   int a = 67;
   int b = 4;
   int c = appendDigit(a,b);
   std::cout << c;
}


Answer 4:

算上现有的数的数字,乘以它的10次方,并加入到第二个数字。



Answer 5:

int append_digits(int i1, int i2) {
    int result = 0;
    while (i1) {
        result *= 10;
        result += i1 % 10;
        i1 /= 10;
    }
    while (i2) {
        result *= 10;
        result += i2 % 10;
        i2 /= 10;
    }
    int final_result = 0;
    while (result) {
        final_result *= 10;
        final_result += result % 10;
        result /= 10;
    }
    return final_result;
}

重构,以减少重复代码就留给读者自己练习。



Answer 6:

这里有一个更严重的:

int append_digits(int i1, int i2) {
    int i2_copy = i2;
    while (i2_copy) {
        i1 *= 10;
        i2_copy /= 10;
    }
    return i1 + i2;
}

这避免了浮点数学和字符串转换。



文章来源: How To Append an Integer (with an Integer) in C++