Rumah > pembangunan bahagian belakang > C++ > Mengapa Huruf Integer Tidak Bertanda dalam C dan C Dipromosikan kepada Jenis yang Lebih Besar?

Mengapa Huruf Integer Tidak Bertanda dalam C dan C Dipromosikan kepada Jenis yang Lebih Besar?

Patricia Arquette
Lepaskan: 2024-12-12 19:30:15
asal
701 orang telah melayarinya

Why Do Unsigned Integer Literals in C and C   Promote to Larger Types?

Nombor Bulat Tanpa Akhiran: Dipromosikan kepada Jenis yang Lebih Besar jika Perlu

Pertanyaan asal meneroka sebab lelaran kepada 10 bilion mengakibatkan tingkah laku yang tidak dijangka. Satu syak wasangka ialah literal integer tanpa imbuhan mungkin tidak lalai kepada jenis int biasa.

Dalam kedua-dua C dan C , literal tersebut dinaikkan pangkat secara automatik kepada jenis integer yang sesuai. Ini memastikan bahawa nilainya boleh diwakili dalam had sekurang-kurangnya satu daripada jenis integer yang tersedia.

Piawaian C dan C

Mengikut piawaian C 11 ( [lex.icon] ¶2) dan piawai C99 (§6.4.4.1), literal integer tanpa akhiran diberi jenis terkecil daripada senarai berikut yang boleh menampung nilainya:

  • int
  • long int
  • long long int

Dalam kes 10 bilion, pemalar integer ini akan diklasifikasikan sebagai int panjang (atau int panjang panjang jika int panjang ditakrifkan sebagai 32-bit).

Ralat Penyusunan untuk Huruf Terlalu Besar

Kedua-dua C99 dan C 11 menyatakan bahawa literal yang melebihi julat boleh diwakili untuk semua jenis integer yang dibenarkan menghasilkan a ralat penyusunan. Walau bagaimanapun, sesetengah penyusun mungkin mengendalikan perkara ini dengan cara yang tidak standard, seperti memotong secara senyap atau membuang lebihan digit.

Atas ialah kandungan terperinci Mengapa Huruf Integer Tidak Bertanda dalam C dan C Dipromosikan kepada Jenis yang Lebih Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan