2016-02-11 4 views
0

Я пытаюсь выполнить работу модуля с номером до 10^18. Я не могу сохранить эти числа в int, и если я возьму его float, тогда я не могу применить оператор модуля, так как я могу это сделать.Как справиться с большими числами, которые не могут быть сохранены int in c

Я искал его, но не нашел ответа.

Я нашел один метод для typecast, но он не может решить мою проблему, а другой - использовать массив.

Итак, существует только способ использования массива.

+1

Вы не показываете расчет, но может быть возможно выполнить модуль на его шагах, поэтому он никогда не становится большим. –

+4

Если вы используете стандарт C99 или более поздний, вы можете использовать тип [long long] (https://en.wikipedia.org/wiki/C_data_types#Basic_types), который составляет не менее 64 бит, и будет содержать 10^18. – skrrgwasme

+0

Возможный дубликат [Объявление 64-битных переменных в C] (http://stackoverflow.com/questions/19451101/declaring-64-bit-variables-in-c) – user3386109

ответ

3

Использовать long long int, который варьируется от -9,223,372,036,854,775,808 до +9,223,372,036,854,775,807. Для беззнаковых значений вы можете использовать unsigned long long int, который находится в диапазоне от 0 до 18.446.744.073.709.551.615

Вот ваш выбор

long long 
long long int 
signed long long 
signed long long int 
unsigned long long 
unsigned long long int 
+0

да, это больше похоже на платформу, а отредактированная версия user3386109 верна. –

+0

int является необязательным, поэтому long long равен long long int, но я предлагаю использовать long long int, более понятный для программистов с не C или новыми C. –

0

Для длинного номера вы можете использовать неподписанный долго долго ИНТ или долго долго ИНТ Если это не работает для вас, чем вы можете использовать запись для хранения значений.

+1

«Использовать запись для хранения значений»? – immibis

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