Соединить первые и последние 3 цифры от короткого целого числа? - PullRequest
1 голос
/ 25 января 2012

У меня есть много переменных в массиве, как это: short num = 7123;.Значение ВСЕГДА 4 цифры.Как превратить это в a = 7; b = 123;?

Все, что я могу придумать, это преобразовать в c-string и удалить ее, но не кажется эффективным.

Ответы [ 5 ]

5 голосов
/ 25 января 2012
b = num % 1000;
a = num / 1000;
3 голосов
/ 25 января 2012

Стандартная библиотека C содержит div(), которая может сделать это за одну операцию:

div_t r = div(num, 1000);
a = r.quot;
b = r.rem;

Ожидается, что стандартная библиотека C будет иметь оптимизированную реализацию div(), которая будет выполнять остаток деления и в одной машинной инструкции (на процессорах, которые имеют такую ​​инструкцию).

1 голос
/ 25 января 2012

Это так же просто, как:

a = num / 1000;
b = num % 1000;
1 голос
/ 25 января 2012
short a = num / 1000; 
short b = num % 1000;
0 голосов
/ 25 января 2012
// cast to integer should drop the decimal
a = (int) ( num / 1000 );

// use variable a to subtract the thousand place to zero
b = a - num;
...