завожу переменную типа unsigned long long, компилятор выдаёт предупреждение: , но, тем не менее, адекватно с ней работает. Вот думаю, может лучше определить структуру из двух лонгов?
я всегда пользовался LONGLONG: Код (Text): typedef __int64 LONGLONG; typedef unsigned __int64 ULONGLONG;
long long это С99, который, на сколько я знаю, до сих пор слабо поддерживается (где-то лучше, где-то хуже). Что за компилятор?
2maksim_ сейчас по умолчанию считается, что человек пишет портабельное ПО? ^______^ 2Rel до кучи LONG_INTEGER, но это уже несколько другое ))
Я пользую такое: Код (Text): //I need a 64-bit integer #ifdef _MSC_VER typedef unsigned __int64 uint64_t; // Define it from MSVC's internal type typedef __int64 int64_t; #else #include <cstdint> // Use the C99 official header #endif
сейчас по умолчанию считается, что человек должен писать только на VC? или же читерство, предложенное microsoft по умолчанию становится стандартом?
в нем он определен так Код (Text): #if !defined (stdint_int64_defined) # if defined(__GNUC__) # define stdint_int64_defined __extension__ typedef long long int64_t; __extension__ typedef unsigned long long uint64_t; # define UINT64_C(v) v ## ULL # define INT64_C(v) v ## LL # ifndef PRINTF_INT64_MODIFIER # define PRINTF_INT64_MODIFIER "ll" # endif # elif defined(__MWERKS__) || defined (__SUNPRO_C) || defined (__SUNPRO_CC) || defined (__APPLE_CC__) || defined (_LONG_LONG) || defined (_CRAYC) || defined (S_SPLINT_S) # define stdint_int64_defined typedef long long int64_t; typedef unsigned long long uint64_t; # define UINT64_C(v) v ## ULL # define INT64_C(v) v ## LL # ifndef PRINTF_INT64_MODIFIER # define PRINTF_INT64_MODIFIER "ll" # endif # elif (defined(__WATCOMC__) && defined(__WATCOM_INT64__)) || (defined(_MSC_VER) && _INTEGRAL_MAX_BITS >= 64) || (defined (__BORLANDC__) && __BORLANDC__ > 0x460) || defined (__alpha) || defined (__DECC) # define stdint_int64_defined typedef __int64 int64_t; typedef unsigned __int64 uint64_t; # define UINT64_C(v) v ## UI64 # define INT64_C(v) v ## I64 # ifndef PRINTF_INT64_MODIFIER # define PRINTF_INT64_MODIFIER "I64" # endif # endif #endif
gcc поддерживает. long long, unsigned long long. Я думаю вообще на многих сейчас поддерживается такой тип
cupuyc Слушай, а обязательно такой гадостью пользоваться? Почему не GCC, например? Я от IAR просто в полуобмороке валялся, когда по работе пришлось на нем компилить. Эта падла иногда такое заворачивает, что у меня чуть матюги не исчерпались. >8-E]