¿Cómo combinar 2 enteros para obtener 1?

Busqué sobre esto pero no encontré una respuesta clara para este problema en lenguaje C

Imagina que tengo un int a = 123 y otro int b = 456 .

¿Cómo los combino para obtener la combine(a, b) == 123456 ?

Puede multiplicar a por 10 a la potencia de N, donde N es el número de dígitos en b , luego sume ese número a b .

Menos eficientemente, puede convertir ambas cadenas, concatenarlas y luego analizar esa cadena en un entero.

En cualquier caso, existe la posibilidad de desbordamiento de enteros.

Si se permite que b sea ​​negativo, tendrá que definir mejor el resultado deseado.

Primero encuentre el número de dígitos en “b” Esto se puede hacer de la siguiente manera:

 int find_num_digits(int b) { int i = 0; while (b > 0) { b = b/10; i++; } return i; } 

Luego haz: c = a * 10 ^ find_num_digits (b) + b;

“c” es el resultado. Deberá asegurarse de que “c” no salga de los límites.

 int combine(int a, int b) { return 1000*a + b; } 

Más genéricamente:

 int combine(int a, int b) { if (b==0) return a; return combine(a, b/10)*10+ b%10; }