длинный для 12-значного числа? - PullRequest
2 голосов
/ 21 июня 2011

Я пытаюсь использовать long для 12-значного числа, но он говорит, что "целочисленная константа слишком велика для" длинного "типа", и я попробовал это с C ++ и Processing (аналогично Java).Что происходит и что я должен использовать для этого?

Ответы [ 4 ]

5 голосов
/ 21 июня 2011

В C и C ++ (в отличие от Java) размер long определяется реализацией. Иногда это 64 бита, иногда 32. В последнем случае вам достаточно места только для 9 десятичных цифр.

Для гарантии 64-битного типа вы можете использовать либо тип long long, либо тип фиксированной ширины, например int64_t.

3 голосов
/ 21 июня 2011

Если вы указываете литеральную константу, вы должны использовать соответствующий спецификатор типа:

int i = 5;
unsigned i = 6U;

long int i = 12L;
unsigned long int i = 13UL;

long long int i = 143LL;
unsigned long long int i = 144ULL;

long double q = 0.33L;

wchar_t a = L'a';
1 голос
/ 21 июня 2011

Я не знаю, в C ++, но в C есть заголовочный файл с именем <stdint.h>, который будет иметь целочисленные типы с количеством битов, которое вы хотите.беззнаковый аналог (uint8_t и т. д.).

Обновление: заголовок называется <cstdint> в C ++

1 голос
/ 21 июня 2011

Попробуйте использовать long long в gcc или __int64 в msvc.

...