【发布时间】:2013-03-28 16:00:39
【问题描述】:
long 是一个 64 位有符号二进制补码整数。 Long 是 128 位有符号二进制补码整数吗?我只是想在继续之前确认这一点。
Long l = 6;
int i = 4;
Integer ii = 2;
l += (l/i) * ii;
我想知道我需要在哪里进行类型转换才能返回 3 而不是 2。
我尝试了以下方法:
l += (long) (((double) l/i) * ii);
当我用double 输入l/i 时,我会返回1,而不是1.5?
假设我要对 Long 进行类型转换,这是 Long 的最大数字,使用 (long),由于 long 是 64 位有符号二进制补码整数,会发生什么。
【问题讨论】:
-
大小取决于您的编译器。使用 sizeof()。同时添加标签
C,或C++ -
它既不是 C 也不是 C++。我添加了一个 Java 标记。
-
@GrijeshChauhan
sizeof不是确定整数用来表示的值位数的准确方法,因为可能存在填充位。 -
@dalwh 你可以更改标签
-
@modifiablelvalue 是的,我也在评论 C/C++。 OP忘记添加语言标签了。
标签: java double type-conversion long-integer