Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah `long` Dijamin Mempunyai Sekurang-kurangnya 32 Bit dalam C ?

Adakah `long` Dijamin Mempunyai Sekurang-kurangnya 32 Bit dalam C ?

Barbara Streisand
Barbara Streisandasal
2024-10-26 17:39:30979semak imbas

Is `long` Guaranteed to Have at Least 32 Bits in C  ?

Adakah lama Dijamin Mempunyai 32 Bit?

Walaupun andaian biasa berdasarkan Piawaian C, persoalan timbul sama ada panjang dijamin mempunyai sekurang-kurangnya 32 bit. Standard mengklasifikasikan jenis kamiran asas sebagai:

sizeof(char) ≤ sizeof(short int) ≤ sizeof(int) ≤ sizeof(long int)

Walau bagaimanapun, ramai yang menganggap bahawa berdasarkan hierarki ini, panjang mesti mempunyai 32 bit. Walau bagaimanapun, Piawaian secara eksplisit menyatakan bahawa bilangan bit dalam bait adalah ditakrifkan pelaksanaan.

Tuntutan Alf P. Steinbach

Walaupun terdapat percanggahan ini, Alf P. Steinbach menegaskan bahawa panjang dijamin 32 bit. Beliau mengasaskan tuntutan ini pada had Tersirat pada julat nilai yang lama boleh disimpan (LONG_MIN hingga LONG_MAX).

Piawaian C merujuk kepada Piawaian C (18.3.2), yang mentakrifkan:

LONG_MIN ≤ -2^31 + 1
LONG_MAX ≥ 2^31 - 1

Sambungan kepada Perwakilan 32-Bit

Walaupun ini menetapkan julat untuk jangka masa yang lama, ia tidak menjamin 32 bit secara eksplisit. Walau bagaimanapun, terdapat dua kemungkinan:

  1. Perwakilan Dua Pelengkap:
    Jika nombor negatif diwakili dalam pelengkap dua, menyimpan LONG_MIN atau LONG_MAX memerlukan 32 bit.
  2. Bit Tanda Eksplisit:
    Jika bit tanda digunakan untuk nombor negatif, jumlah storan masih memerlukan 32 bit.

Kesimpulan

Walaupun Standard C tidak secara eksplisit memerlukan panjang untuk mempunyai 32 bit, keperluan julat minimum (LONG_MIN hingga LONG_MAX) secara tersirat memerlukannya. Ini kerana mewakili nilai ini memerlukan sama ada 32 bit storan atau mekanisme khusus pelaksanaan dengan kapasiti nilai yang setara. Oleh itu, boleh disimpulkan bahawa C menjamin bahawa panjang mempunyai sekurang-kurangnya 32 bit.

Atas ialah kandungan terperinci Adakah `long` Dijamin Mempunyai Sekurang-kurangnya 32 Bit dalam C ?. 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