2012-01-25 4 views
1

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

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

ответ

5
b = num % 1000; 
a = num/1000; 
+0

2tru 2tru 2tru 2tru – user1139252

+1

или b = num - a * 1000, если вы хотите сохранить деление ... – mcmcc

+1

@mcmcc Если мы собираемся микрооптимизировать, мы должны добавить 24, а затем перейти вправо на 10 и избежать делений и modulo вообще ... (это безопасно, потому что короткий int может содержать более 4 цифр, поэтому нет возможности переполнения) – bdares

1

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

a = num/1000; 
b = num % 1000; 
0
// cast to integer should drop the decimal 
a = (int) (num/1000); 

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

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

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

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

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