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:
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!