Rumah > Java > javaTutorial > Mengapa Menambah 'L' pada Integer Mengubah Keputusan Pendaraban?

Mengapa Menambah 'L' pada Integer Mengubah Keputusan Pendaraban?

Linda Hamilton
Lepaskan: 2024-11-07 09:53:02
asal
745 orang telah melayarinya

Why Does Adding 'L' to an Integer Literal Change Multiplication Results?

Mengapa Operasi Pendaraban Menghasilkan Keputusan yang Berbeza?

Dalam kod yang disediakan, perbezaan dalam keputusan timbul disebabkan kehadiran atau ketiadaan huruf "L" dilampirkan pada literal integer. Untuk memahami percanggahan ini, adalah penting untuk menyelidiki jenis data yang terlibat:

long oneYearWithL = 1000*60*60*24*365L;
long oneYearWithoutL = 1000*60*60*24*365;
Salin selepas log masuk

Nilai yang diberikan kepada oneYearWithL ialah panjang, ditunjukkan oleh akhiran "L". Panjang boleh mewakili julat nilai yang lebih besar berbanding dengan integer. Dalam kes ini, 365 dianggap panjang, dan hasil pendarabannya dengan nilai integer sebelumnya juga panjang.

Sebaliknya, oneYearWithoutL diberikan nilai integer. Mendarab nilai integer menghasilkan integer. Walau bagaimanapun, nilai ungkapan ini melebihi had integer maksimum 32-bit (2^31 - 1). Oleh itu, semasa penugasan, ia dipotong untuk dimuatkan dalam julat integer yang sah, membawa kepada pengiraan yang salah.

Untuk menggambarkan perkara ini dengan lebih lanjut, pertimbangkan output berikut:

System.out.println(1000*60*60*24*365L);
System.out.println(1000*60*60*24*365);
System.out.println(Integer.MAX_VALUE);
Salin selepas log masuk

Output:

31536000000
1471228928
2147483647
Salin selepas log masuk

Ini menunjukkan bahawa apabila "L" dimasukkan, hasilnya berada dalam julat jenis data yang panjang dan oleh itu tepat. Tetapi apabila "L" diabaikan, hasilnya dipotong kepada integer, mengakibatkan nilai yang salah.

Untuk membetulkan isu ini dan mendapatkan hasil yang betul, ungkapan pendaraban dalam oneYearWithoutL sama ada harus dibuang secara eksplisit ke penggunaan panjang (panjang) atau literal angka harus ditambah akhiran "L", seperti oneYearWithoutL = 1000*60*60*24*365L.

Atas ialah kandungan terperinci Mengapa Menambah 'L' pada Integer Mengubah Keputusan Pendaraban?. 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