Rumah >pembangunan bahagian belakang >C++ >Mengapakah Huruf Integer Terlalu Besar dalam C dan C Kadangkala Tidak Default kepada `int`?

Mengapakah Huruf Integer Terlalu Besar dalam C dan C Kadangkala Tidak Default kepada `int`?

Patricia Arquette
Patricia Arquetteasal
2024-12-07 17:47:14484semak imbas

Why Do Excessively Large Integer Literals in C and C   Sometimes Not Default to `int`?

Huruf Integer: Tidak Sentiasa Int Secara Lalai

Semasa berulang dalam gelung, literal integer yang terlalu besar boleh membawa kepada isu yang tidak dijangka. Biasanya, literal tanpa akhiran ditafsirkan sebagai int. Walau bagaimanapun, andaian ini mungkin tidak sesuai untuk nilai yang sangat besar.

Limpahan dan Promosi

Apabila integer literal melebihi julat int (biasanya 32-bit), tidak ditentukan tingkah laku (UB) boleh terhasil. Walau bagaimanapun, dalam sesetengah kes, pengkompil mungkin secara automatik mempromosikan literal kepada jenis yang lebih besar, seperti long int (yang biasanya 64-bit).

Spesifikasi Standard

Kedua-dua piawaian C dan C mengawal selia promosi literal integer mengikut kesesuaian jenis.

  • C: Bahagian 6.4.4.1 standard C99 menyatakan bahawa jenis literal ialah yang pertama disenaraikan di mana nilainya boleh diwakili (iaitu, int, int panjang , long long int) atau jenis integer lanjutan jika perlu.
  • C : Bahagian [lex.icon] ¶2 piawaian C 11 juga menyatakan promosi kepada long int atau long long int mengikut keperluan.

Contoh

Pertimbangkan integer literal 10000000000. Dalam persekitaran C, ini akan ditafsirkan sebagai int panjang. Walau bagaimanapun, jika pengkompil yang digunakan ialah pengkompil 32-bit, ini boleh mengakibatkan ralat kompilasi kerana literalnya terlalu besar untuk jenis integer yang tersedia.

Atas ialah kandungan terperinci Mengapakah Huruf Integer Terlalu Besar dalam C dan C Kadangkala Tidak Default kepada `int`?. 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