Rumah >pembangunan bahagian belakang >C++ >Mengapa 'berganda panjang' Menduduki 12 Bait pada Sistem Windows XP 32-bit Saya?
Menjelaskan Percanggahan antara 'long double' dan 'double' Jenis Data
Walaupun faham umum bahawa 'long double' biasanya menduduki 8 bait, poster itu menghadapi senario pelik di mana 'double panjang' menuntut 12 bait pada sistem Windows XP 32-bit mereka. Untuk merungkai enigma ini, mari kita mendalami sebab asasnya.
Menurut Wikipedia, pada seni bina x86 (yang termasuk Windows XP), kebanyakan penyusun memilih untuk melaksanakan 'double panjang' sebagai jenis ketepatan lanjutan 80-bit . Walau bagaimanapun, untuk mengekalkan penjajaran struktur data yang cekap, jenis ini mungkin disimpan sebagai 12 bait (atau bahkan 16 bait) dalam beberapa kes.
Selain itu, penyusun tertentu melangkaui jenis 80-bit dan melaksanakan 'ganda panjang' sebagai format ketepatan empat kali ganda 128-bit. Format lanjutan ini tidak diterima pakai secara meluas dan biasanya dilaksanakan dalam perisian, dan bukannya disokong secara asli oleh perkakasan.
Oleh itu, jawapannya terletak pada budi bicara pengkompil. Walaupun 'double panjang' secara amnya sejajar dengan jenis ketepatan lanjutan 80-bit, penyusun bebas untuk memanjangkan kapasiti storannya kepada 12 atau bahkan 16 bait untuk tujuan penjajaran. Akibatnya, kapasiti storan lanjutan berpotensi membolehkan julat nilai yang lebih luas disimpan dalam 'double panjang' berbanding 'double'.
Atas ialah kandungan terperinci Mengapa 'berganda panjang' Menduduki 12 Bait pada Sistem Windows XP 32-bit Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!