Как я могу сохранить переменную с большим диапазоном в программе на C? - PullRequest
0 голосов
/ 01 июня 2019

Предположим, я хочу сохранить переменную, имеющую тип данных integer. Целое число обеспечивает определенный диапазон 2 байта или 4 байта. Также диапазон от -32768 до 32767. Я хочу хранить 32768. Как я могу?

Ответы [ 2 ]

1 голос
/ 01 июня 2019

На разных платформах int имеют разные размеры в C. Иногда, как вы сказали, они имеют размер 2 байта, иногда 4 и т. Д. Итак, если это 2 байта, то это 16 бит, поэтому он может хранить2 ^ 16 = 65536 различных значений.Поскольку вы используете значение со знаком, половина этих значений отрицательна, поэтому вы не можете ввести большее значение для int здесь.Однако, если вы используете C99 или более позднюю версию, вы можете использовать int32_t, включая stdint.h.Это позволит вам хранить до 2 ^ 31 - 1 = 2 147 483 647.

0 голосов
/ 01 июня 2019

Существует тип данных, который гарантированно хранит этот диапазон во всех реализациях C .Это называется long int.Возможно, используйте его вместо этого.

Кроме того, 32-битные платформы обычно имеют 32-битные;единственное отличие здесь - это 64-битные платформы, где некоторые могут использовать для него 64-битный тип данных.

Если требования к хранилищу важны, используйте int32_t.

...