sách gpt4 ăn đã đi

java - 乘法发生溢出

In lại 作者:太空狗 更新时间:2023-10-29 22:36:20 24 4
mua khóa gpt4 giày nike

long m = 24 * 60 * 60 * 1000 * 1000;

上面的代码造成了溢出并且没有打印出正确的结果。

long m2 = 24L * 60 * 60 * 1000 * 1000;
long m3 = 24 * 60 * 60 * 1000 * 1000L;

以上两行打印出正确的结果。

我的问题是-

  1. m2 hoặc m3 对我使用的编译器有影响吗?
  2. java 是如何开始繁殖的?从左到右还是从右到左?是先计算 24*60 还是先计算 1000*1000?

câu trả lời hay nhất

在这种情况下——

long m = 24 * 60 * 60 * 1000 * 1000;  

赋值权先求值。右边没有dài类型的数据。都是số nguyên。因此 JVM 尝试将结果放入 số nguyên 中,然后发生溢出。

在第二种情况下——

long m2 = 24L * 60 * 60 * 1000 * 1000;
long m3 = 24 * 60 * 60 * 1000 * 1000L;

这里乘法的一个操作数是dài。所以其他人会自动提示dài。结果试图适应 dài。最后,使用 m2m3 完成分配。

是的,乘法的结合性从左到右 - 意味着先取左操作数。基于这个事实,我认为在这种情况下我们应该使用 -

long m2 = 24L * 60 * 60 * 1000 * 1000;  

这个语句,因为在这个语句中,对 dài 的提升发生得更早,这降低了溢出的风险。

关于java - 乘法发生溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30606365/

24 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress