Memahami Gelagat 'long long' dalam C/C
Apabila bekerja dengan jenis data integer dalam C/C , adalah penting untuk memahami nuansa perwakilan integer. Satu jenis data khusus, 'long long', sering menimbulkan persoalan tentang kelakuannya.
Pertimbangkan coretan kod berikut:
#include <stdio.h> int main() { int num1 = 1000000000; long num2 = 1000000000; long long num3; // num3 = 100000000000; long long num4 = ~0; printf("%u %u %u", sizeof(num1), sizeof(num2), sizeof(num3)); printf("%d %ld %lld %llu", num1, num2, num3, num4); return 0; }
Apabila melaksanakan kod ini, anda mungkin menghadapi ralat jika anda nyahkomen baris yang diulas:
// num3 = 100000000000;
Ralat berbunyi:
"ralat: pemalar integer terlalu besar untuk jenis panjang"
Walau bagaimanapun, apabila anda menyusun dan menjalankan kod tanpa menyahkomen baris itu, ia mengeluarkan nilai yang jauh lebih besar daripada 10000000000. Mengapa?
Memahami Huruf Integer dan Data Jenis
Dalam C/C , literal integer ialah pemalar yang mewakili nilai angka. Jenis literal integer ditentukan oleh akhiran, seperti 'L' atau 'LL'. Tanpa akhiran, literal dianggap sebagai 'int' secara lalai.
Dalam kod yang disediakan, nilai '100000000000' terlalu besar untuk diwakili dalam jenis data 'panjang'. Oleh itu, anda mesti menambah akhiran untuk menunjukkan jenis data yang dimaksudkan.
Menetapkan Huruf Dengan Betul
Untuk menyelesaikan ralat, anda harus menetapkan literal menggunakan akhiran yang betul , seperti yang ditunjukkan di bawah:
long long num3 = 100000000000LL;
Akhiran 'LL' menandakan bahawa literal harus dianggap sebagai 'panjang jenis long', yang boleh menampung julat nilai yang lebih besar.
Barisan yang dikemas kini memberikan nilai '100000000000' kepada 'num3' tanpa mencetuskan ralat. Ini memastikan pembolehubah 'num3' boleh memegang dan beroperasi pada nilai angka besar yang dimaksudkan.
Atas ialah kandungan terperinci Mengapakah coretan kod gagal apabila menetapkan literal integer besar kepada pembolehubah `panjang`, tetapi berfungsi apabila menggunakan `panjang panjang`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!