64-bit Windows üzerinde uzun bit boyutu nedir?
Değil uzun zaman önce, birisi long 64 bit makinelerde 64 bit olmadığını söyledi ve her zaman int kullanmalıyım. Bu bana pek mantıklı gelmedi. Docs (Apple'ın resmi sitesi) long 64-bit İŞLEMCİ için derleme 64 bit gerçekten olduğunu söylüyorlar gördüm. 64-bit Windows üzerinde olduğunu ve ne buldum araştırdım
- Windows:
longintuzunluğu, ve özel yeni veri tipleri 32-bit kalır 64-bit tamsayılar için tanımlı.
(http://www.intel.com/cd/ids/developer/asmo-na/eng/197664.htm?page=2)
Kullanmalıyım? Windows long gibi uw, sw ((BM)genişlik imzalı) gibi bir şey tanımlamak, ve aksi takdirde hedef CPU bitsize bir kontrol yapmalıyım?
CEVAP
Unix dünyasında, 64-bit platformlar için tamsayılar ve işaretçileri boyutları için birkaç olası düzenlemeler vardı. İki en yaygın kullanılan İLP64 (aslında, bu sadece çok az bir örnek; Cray böyle oldu) ve LP64 hemen hemen her şey için (). Bu acronynms gelen 'int, long, işaretçiler 64-bit' ve 'uzun, işaretçiler 64-bit.
Type ILP64 LP64 LLP64
char 8 8 8
short 16 16 16
int 64 32 32
long 64 64 32
long long 64 64 64
pointer 64 64 64
Bu İLP64 sistemi terk edilmiş vaziyette iyilik LP64 (yani, hemen hemen tüm katılımcılar daha sonra kullanılan LP64, temel öneriler Aspen grup; sadece sistemleri ile uzun mirasını 64-bit işletim kullanın farklı bir düzeni). Tüm 64-bit Unix sistemler modern LP64 kullanın. MacOS X ve Linux modern 64-bit sistemler de vardır.
Microsoft 64-bit geçiş için farklı bir planı kullanır: (uzun uzun, işaretçiler 64-bit'). LLP64 Bu 32-bit yazılım değişiklik olmadan çekirdekler anlam değer taşıyor. Herkes farklı olmanın ihtar ve ayrıca kod 64-bit kapasiteleri yararlanmak için revize edilmesi gerekir. Her zaman revizyon gerekli oldu; sadece olanları Unıx platformları üzerinde gerekli düzenlemeler farklı bir dizi oldu.
Eğer tasarım yazılımı platformdan bağımsız tamsayı türü adları, muhtemelen kullanarak C99 <inttypes.h> başlık, hangi türleri mevcuttur platformu sağlar, imzalı (liste) ve işaretsiz (listede; öneki ile 'u'):
int8_t- 8-bit tamsayıint16_t- 16-bit tamsayıint32_t- 32-bit tamsayıint64_t- 64-bit tamsayıuintptr_t- işaretsiz tamsayı işaretçisi tutmak için yeterince büyük- Platformu (
int64_tdaha büyük olabilir) tam sayıintmax_t- en büyük boyutu
Uygulamanız gerektiği yerde bu tür bir kod kullanarak yapabilirsiniz, ve sistemi farklı olabilir, bu nedenle çok dikkatli olmak. Orada bir intptr_t türü işaretli bir tamsayı türü için holding işaretçiler; gerekir plan üzerinde kullanarak, ya da sadece kullanarak olarak sonuç çıkarma iki uintptr_t değerler (ptrdiff_t).
Ama, soru işaret ettiği gibi (küfür), 64-bit makinelerde tamsayı veri türlerinin boyutları için farklı sistem vardır. Alışmak; dünyayı değiştirmeyecek.

C standart devlet int boyutu, uzun tür...
C bir Sözlük üzerinde yineleme için en...
Nasıl Windows üzerinde bir bağlantı no...
AD LDS), Windows üzerinde Cygwin kabuk...
LocalStorage deÄŸerleri max boyutu nedi...