假设变量 start
和 stop
都是 long 类型变量。
int diff = (int) start-stop;
此代码产生错误类型不匹配:无法从 long 转换为 int
,而
int diff = (int) (start-stop);
按预期运行。为什么?
最佳答案
因为在第一个中,(int)
适用于start
,而不是表达式,如下所示:
int diff = ((int) start) - stop; // <== Your first expression clarified
然后减去 long
从结果 int
,该表达式的结果是 long
。 (如果它有效,如果 start
的值太大而无法存储在 int
中,它可能会产生错误结果的副作用。)
首先进行减法并得到 long
结果,然后将其转换为 int
,您可以将其存储在您的 int
中多变的。 (想必您知道它适合您的应用程序逻辑。)
关于Java:将 long 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21075215/