Ваш номер требует 38 бит.Если int
вашей платформы не такой большой (и нет причин, по которым это должно быть), то число просто не будет соответствовать.(На самом деле, даже литерал int уже должен был вызвать предупреждение компилятора, предполагая, что это C или C ++.)
Вы всегда можете использовать тип данных с гарантированным размером, например, int64 или что-то в этом роде,в зависимости от вашего языка и платформы.Вероятно, здесь нет необходимости в библиотеках произвольной точности.
В C включают <stdint.h>
и используют int64_t
, или просто используют long long int
, и убедитесь, что вы инициализируете его издлинный длинный целочисленный литерал, например 252121521121LL
.(Могу добавить, что long long официально являются лишь частью самых последних языковых стандартов.)
( Edit: long long int
гарантированно будет по крайней мере 64-битным, поэтому он должен бытьхороший выбор.)