Как использовать тип данных Long в C? - PullRequest
5 голосов
/ 24 декабря 2011

Я немного озадачен тем, как долго работают в C.

Если я спрашиваю максимальное значение long в Java, я получаю число в квинтиллионах.Если я спрашиваю об этом в C, подписанном или неподписанном, это исчисляется миллиардами.

Java построена на C ... так в чем же разница?представляет литералы с длинными длинными значениями, беззнаковыми / знаковыми длинными значениями и длинными значениями int.Кажется, что ни один из них не справился с цифрами, превышающими средние миллиарды.Зачем?Я делаю ошибку?

Ответы [ 3 ]

10 голосов
/ 24 декабря 2011

Стандарт C определяет long как минимум равный int.Фактический размер зависит от реализации.Это не относится к Java, в котором long должен иметь длину 64 бита.

Стандарт C99 определяет целочисленные типы фиксированного размера, такие как int64_t, определенные в stdint.h, которые можно использовать, если вынужны фиксированные целые числа размера на всех платформах.

2 голосов
/ 24 декабря 2011

C также имеет тип long long. Этот гарантированно будет не менее 64 бит.

0 голосов
/ 24 декабря 2011

Если вы хотите работать с большими числами, вы можете использовать библиотеку GNU MP Bignum здесь: http://gmplib.org/ Числа и точность ограничены только доступной памятью машины, на которой он работает.

...