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

Mengapa Menambah 'L' pada Integer Mengubah Keputusan Pendaraban?

Linda Hamilton
Linda Hamiltonasal
2024-11-07 09:53:02543semak imbas

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;

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);

Output:

31536000000
1471228928
2147483647

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!

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