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
Lepaskan: 2024-12-07 17:47:14
asal
501 orang telah melayarinya

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!

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