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!