Rumah >pembangunan bahagian belakang >C++ >Mengapa `berganda panjang` Kadangkala Menduduki 12 Bait?

Mengapa `berganda panjang` Kadangkala Menduduki 12 Bait?

DDD
DDDasal
2024-11-18 01:48:02421semak imbas

Why Does `long double` Sometimes Occupy 12 Bytes?

berganda panjang vs berganda: Teka-teki Ketepatan

Perdebatan mengenai saiz dan ketepatan jenis data berganda dan berganda panjang boleh mengelirukan , terutamanya pada sistem pengendalian yang berbeza. Walaupun sumber biasa sering menyatakan bahawa long double biasanya 8 bait, sesetengah pengaturcara telah menemui saiz 12 bait pada sistem Windows 32-bit.

Jadi, mengapa long double mempunyai saiz 12 bait dalam beberapa kes? Jawapannya terletak pada kerumitan pelaksanaan pengkompil. Menurut Wikipedia, penyusun pada seni bina x86 sering melaksanakan berganda panjang sebagai jenis ketepatan lanjutan 80-bit yang disokong oleh perkakasan. Walau bagaimanapun, untuk mengekalkan integriti struktur data, mereka boleh memilih untuk menyimpannya dalam bekas antara 12 hingga 16 bait.

Selain itu, pengkompil juga boleh memilih untuk menggunakan dua kali ganda untuk format ketepatan empat kali ganda 128-bit. Dalam keadaan ini, long double memang mengembangkan julat nilai yang mungkin melebihi nilai double. Walau bagaimanapun, adalah penting untuk menyedari bahawa pelaksanaan ketepatan lanjutan ini bukan piawaian sejagat dan bergantung sepenuhnya pada konfigurasi pengkompil.

Ringkasnya, saiz dan ketepatan gandaan panjang boleh berbeza-beza berdasarkan pengkompil dan sistem seni bina. Ia tidak dijamin memberikan julat nilai yang lebih luas daripada dua kali ganda dalam semua kes. Pengaturcara harus merujuk kepada dokumentasi pengkompil mereka untuk menentukan butiran pelaksanaan khusus dan membuat keputusan termaklum apabila berurusan dengan pengiraan sensitif ketepatan.

Atas ialah kandungan terperinci Mengapa `berganda panjang` Kadangkala Menduduki 12 Bait?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn