2010-04-15 2 views
1

Какова цель этих новых типов данных? Обычно я просто использую «int» или «long», но почему они существуют? Какую новую функцию или цель они приносят?«long int», «long long» Типы данных

+1

Они существуют уже довольно давно ... – Joey

+0

Как насчет длинных длинных int? –

+0

'long long int' - это то же самое, что' long long';) –

ответ

5

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

long long был на некоторое время (в последнем стандарте C) и гарантирует не менее 64-битного размера (long гарантирует только 32 бит).

0

Ну, они приносят больший диапазон целых чисел, поэтому компьютеры могут легко обрабатывать, например, налоговые декларации Билла Гейтса.

В целом, long int не совсем новый, но большинство людей просто используют более короткий вариант long.

Посмотрите на продолжениях к ним в предстоящем проекте новых стандартов ISO:

longer long  - slightly larger than a long long (this was initially put 
        forward as "long long long" but the ISO committee barfed). 
even longer long - bigger yet. 
stupendous long - should keep us going for a while. 

</юмор >

+1

Вы пропустили long ++ – amelvin

+1

Идя в другую сторону, есть возможность реализовать «короткий длинный». Преимуществом этого является отсутствие новых ключевых слов. Они также могут вводить «короткий короткий», как способ сделать гарантированное количество байтов, освобождая 'char', чтобы быть тем, что необходимо для полного выражения локального набора символов ...

+0

c1x дает нам uint8_t (или что-то в этом роде) для реализаций, которые имеют 8-битный тип (и другие конкретные битовые ширины). Мне очень нравится идея 24-битного короткого времени для значений RGB. – paxdiablo

0

Ну, очевидно, «долго долго» даже больше, чем «длинный ». :)

Разница связана с платформой: «long long» может быть 64-битным целым числом, когда «long» - 32-разрядный или оба могут быть 64-битными. Что касается «long int», это просто длинный способ сказать «длинный», каламбур не предназначен.

0

Возможно, чтобы привести C++ в соответствие с C99, который поддерживает его (и привести стандарт в соответствие с тем, какие компиляторы фактически поддерживают, так как большинство из них уже поддерживаются долго).

+0

Иногда стандарты отстают от того, что там, резиновая штамповка обычной практики (и, надеюсь, не благословляет слишком много неприятных вещей в процессе). –

0

long int - это полная форма long и отличается, например, unsigned long int и т. Д. Это не ново в C++ 0x.

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

Вы также можете получить 128-битные типы данных для некоторых компиляторов, используя long long long; другие компиляторы предоставляют такие числа, используя атрибуты (например, GCC имеет __attribute__((__mode__(__TI__))))), и большинство из них имеют <limits.h>, у которого есть __int128_t/__uint128_t.

0

Как уже упоминалось, эти типы не новы. Вас может заинтересовать this overview. В качестве дополнительного замечания, если вы путаете о типах, вы также можете использовать intn_t types, которые имеют более четкое «значение».