Mengapa Hasil Pendaraban Berbeza dengan dan tanpa "L"?
Di Java, operasi pendaraban menghasilkan hasil yang berbeza apabila menggunakan "L" akhiran untuk salah satu operan.
Menambah "L" untuk Nilai Panjang yang Betul
Menambah "L" memastikan bahawa hasilnya adalah nilai yang panjang. Apabila mendarab integer, hasilnya juga adalah integer. Jika keputusan melebihi julat integer (2147483647 hingga -2147483648), ia melimpah dan menjadi negatif.
Dengan menambahkan "L" kepada 365 dalam ungkapan, anda dengan jelas menyatakan bahawa nilai itu panjang. Ini memastikan bahawa hasil pendarabannya dengan integer lain adalah nilai yang panjang dan tidak dipotong kepada julat integer.
Tanpa "L": Keputusan Integer Salah
Apabila mendarab integer tanpa "L", hasilnya ialah integer. Jika keputusan melebihi julat integer, ia "bergulung" dan menjadi nilai yang berbeza.
Contohnya, pendaraban 1000606024365 tanpa menambah " L" memberikan hasil yang salah 1471228928. Ini kerana hasil 31536000000 melimpahi julat integer dan menjadi -1702967296 (wakil pelengkap 2 bagi 31536000000).
365: 0111111111111111111111111111111111
Apabila anda tidak menambah "L", empat bit 110 yang paling ketara mewakili 1010 yang paling ketara 010010110000000000, yang mana sepadan dengan hasil yang salah.
Atas ialah kandungan terperinci Mengapa menambahkan "L" pada satu operan dalam pendaraban Java mengubah hasilnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!