Rumah >pembangunan bahagian belakang >C++ >Mengapakah Huruf Integer Besar dalam For Loops Berkelakuan Berbeza Daripada Jangkaan?

Mengapakah Huruf Integer Besar dalam For Loops Berkelakuan Berbeza Daripada Jangkaan?

Linda Hamilton
Linda Hamiltonasal
2024-12-14 15:47:111001semak imbas

Why Do Large Integer Literals in For Loops Behave Differently Than Expected?

Jenis Huruf Integer: Bukan Int secara Lalai?

Soalan:

Mengapa a untuk lelaran gelung sehingga 10 bilion mengambil masa lebih lama daripada satu lelaran sehingga 1 bilion?

Jawapan:

Pembolehubah lelaran dalam gelung ialah 32-bit dan melimpah, menyebabkan gelung tak terhingga. Huruf yang mewakili 10 bilion, walaupun tidak mempunyai akhiran L, dinaikkan secara automatik kepada julat yang sesuai (sekurang-kurangnya 64-bit dalam kes ini) oleh pengkompil.

C :

Menurut piawai C 11 ([lex.icon] ¶2), jenis literal integer tanpa akhiran ialah yang pertama daripada Jadual 6 di mana nilainya boleh diwakili:

Type
int
long int
long long int

Oleh itu, dalam kes ini, literal ditafsirkan sebagai int panjang atau int panjang panjang (jika int panjang ialah 32-bit).

C:

Dalam C99 ([§6.4.4.1]), peraturannya ialah serupa. Jenis pemalar integer ditentukan oleh jenis pertama daripada senarai yang serupa di mana nilainya boleh diwakili.

Jenis Ditentukan Pelaksanaan:

Kedua-dua C 11 ( [lex.icon] ¶3) dan C99 ([§6.4.4.1 ¶5]) membenarkan literal integer menjadi "dilanjutkan jenis integer" (jenis integer khusus pelaksanaan) jika tiada jenis sah lain ditemui.

Atas ialah kandungan terperinci Mengapakah Huruf Integer Besar dalam For Loops Berkelakuan Berbeza Daripada Jangkaan?. 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