2010-01-03 3 views
3

Как я могу объединить два числа, такие как 7 и 6, чтобы привести число 76, или 3 и 3, чтобы результат был равен 33, в объективе-c?Как объединить два числа в Objective-C

+1

Это не добавляя, что это конкатенация. –

+0

Изменить, чтобы отразить первоначальное намерение. –

ответ

15

Там нет встроенного в символ для конкатенации номера. Тем не менее, вы можете сделать это, выполнив:

int first; /* Assuming this is initialized to the first number */ 
int second; /* Assuming this is initalized to the second number */ 
int myVal = [[NSString stringWithFormat:@"%d%d",first, second] intValue]; 
+0

Строки формата форматирования стоят дорого. Используйте -stringByAppendingString: когда сможете. – NSResponder

+2

Для этого потребуется два отдельных выделения памяти, которые могут быть более дорогими, чем синтаксический анализ этой строки (простого) формата. Во всяком случае, я не думаю, что производительность любого метода будет огромной проблемой. – Mike

+1

Согласен с Майком. Сложность настройки двух строк из целых чисел и их конкатенации вряд ли будет лучше, чем + stringWithFormat для этой проблемы. Конечно, для этого наверняка потребуется профилирование, поскольку другой общий способ использования NSNumber -stringValue может быть еще более дорогим. Даже если у вас уже были строки, мне было бы очень интересно узнать стоимость + stringWithFormat по сравнению с -stringByAppendingString, особенно в случае более чем двух элементов, и только профилирование скажет нам. Какао не дает никаких обещаний об эффективности в любом случае. –

5

FirstNum * 10 + SecondNum :-)

+0

Это будет работать только для одноразрядных номеров. – Mike

1

Если вы хотите два числа х и у, чтобы добавить к ху, вы можете сделать

10 * х + у.

Для 7 и 6

7 * 10 + 6 = 76

+0

Это будет работать только для одноразрядных номеров. – Mike

1

Я не знаю много о Objective-C, но я бы сказал:

  • Если вы получите номера из массива, например nums = array (7,6), инициализировать result = 0, а затем сделать foreach на них. Для каждого найденного значения выполните: res = res * 10 + значение. В конце, даже если у вас есть 7 номеров для конкатенации, вы получите результат правильно. т.е.:

    Array nums = Array (7,6,8,9); int res = 0; значение int; foreach (значение в цифрах) res = res * 10 + value;

  • Если вы можете использовать строки, просто соедините их, как предложено выше. возможно, есть функция для объединения всех значений из массива, чтобы сделать его гибким.

Надеется, что это помогает

C^

Смежные вопросы