首页 > 解决方案 > 为什么转换为 int 给我 8 而不是 0?

问题描述

对不起,如果这很简单。这让我困惑了一段时间。在以下代码中:

public class Main {
    public static void main(String[] args) {
        long a = 10000000000L;
        System.out.println(a % 10);
    }
}

我得到的输出为 0,这是我所期望的。但是当我像这样转换为 int 时,

public class Main {
        public static void main(String[] args) {
            long a = 10000000000L;
            System.out.println((int)a % 10);
        }
}

我得到 8 作为输出而不是 0。我不明白发生了什么。为什么施法后0变成8?

标签: javatypescastingintlong-integer

解决方案


发生这种情况是因为首先将值转换a为 int 然后执行模块。

你想做的是:

public class Main {
        public static void main(String[] args) {
            long a = 10000000000L;
            System.out.println((int)(a % 10));
        }
}

推荐阅读