SORU
26 ŞUBAT 2009, PERŞEMBE


C standart devlet int boyutu, uzun türü nedir?

Detaylı bilgiler temel C tipi boyutu ile ilgili olarak arıyorum.

Mimarisi (16 bit, 32 bit, 64 bit) ve derleyici bağlı olduğunu biliyorum.

Ama C için herhangi bir standart var mı ?

32 bit bir mimari Visual Studio 2008 kullanıyorum. Şunu anladım :

char   : 1 byte
short  : 2 bytes
int    : 4 bytes
long   : 4 bytes
float  : 4 bytes
double : 8 bytes

Bulmaya çalıştım, pek başarılı olamadım, güvenilir bilgi belirten boyutlarını char, short, int , long, double, float (ve diğer türleri hiç düşünmemiştim) altında farklı mimarileri ve çok da faydalı olabilir.

CEVAP
26 ŞUBAT 2009, PERŞEMBE


C standart bayt cinsinden integral tiplerinin boyutunu belirtmiyor, ama tutmak mümkün olmalıdır minimum aralıkları belirtir. Gerekli dizi bit en küçük boyut algılayın. Sen-ebilmek anlaması en az boyut bayt ve değeri CHAR_BIT makro defines the number of bits in a byte (tüm ama en karanlık platformlar 8, ve o olamaz, daha az 8).

char için ek bir kısıtlama boyutuna her zaman 1 byte ya da CHAR_BIT bit (bu nedenle adı) ' dir.

Minimum required by the standard (sayfa 22) aralığı:

ve Veri Türü MSDN Aralıkları:

  1. signed char: -127 127 (not, 127; barındırmaktadır 1-tamamlayıcı ve işaret-büyüklük için -128 platformlar değil)
  2. unsigned char 0-255
  3. "düz" char: signed char ile aynı Dizi ya unsigned char, implementation-defined
  4. signed short: 32767 . -32767
  5. unsigned short: 65535 . 0
  6. signed int: 32767 . -32767
  7. unsigned int: 65535 . 0
  8. signed long: 2147483647 . -2147483647
  9. unsigned long: 4294967295 . 0
  10. signed long long: 9223372036854775807 . -9223372036854775807
  11. unsigned long long: 18446744073709551615 . 0

(C) C bir uygulama bayt sizeof(type) herhangi bir değeri için, sürece bir tipi boyutunu tanımlayın

  1. ifadesi sizeof(type) * CHAR_BIT bit gerekli aralıkları içeren için yeterince yüksek bir sayıyı, ve
  2. tip sipariş hala geçerli (sizeof(int) <= sizeof(long) gibi).

Uygulama-özel gerçek aralıkları C C <climits> (ya da daha iyisi <limits> başlık std::numeric_limits şablon) <limits.h> başlık bulunabilir.

Örneğin, bu int maksimum menzil bulacaksınız:

C:

#include <limits.h>
const int min_int = INT_MIN;
const int max_int = INT_MAX;

C:

#include <limits>
const int min_int = std::numeric_limits<int>::min();
const int max_int = std::numeric_limits<int>::max();

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Submissions101

    Submissions1

    23 ŞUBAT 2007
  • TechRax

    TechRax

    21 EYLÜL 2009