相关疑难解决方法(0)

int到long赋值

我一直在尝试这个int和long转换,我尝试将int变量long赋给变量.代码如下:

public static void main(String []args){
    int i = 1024;
    long j = i;
    long k = i*i*i*i;
    System.out.println("j= " +j+ ", k= " +k);
}
Run Code Online (Sandbox Code Playgroud)

因此,在打印时j,它只是给出了输出1024.但是在打印时k,它显示溢出(k= 0).我通过使用这种技术解决了这个问题,我已经明确地将每个问题都转换i为了long.即

public static void main(String []args){
    int i = 1024;
    long j = i;
    long k = ((long)i)*((long)i)*((long)i)*((long)i);
    System.out.println("j= " +j+ ", k= " +k);
}
Run Code Online (Sandbox Code Playgroud)

现在,这既表现出的正确的价值观jk.所以,我想知道为什么需要int在第二种情况下进行投射,而不是在第一种情况下投射.在这个繁重的任务之后k,作为一个long可以保留这个值.但是,为什么没有正确分配?

java int long-integer

15
推荐指数
3
解决办法
3万
查看次数

为什么int32.maxvalue + 1溢出很长时间?

如果您将以下代码放在.NET 4.5应用程序中:

public const long MAXIMUM_RANGE_MAGNITUDE = int.MaxValue + 1;
Run Code Online (Sandbox Code Playgroud)

生成编译器错误,指出"操作在编译模式下在编译时溢出".我知道我可以把它放在一个"未经检查"的块中并且没问题,但我的问题是为什么错误出现在第一位?很明显,long可以保持int的最大值加1.

请注意,使用Int32和Int64而不是long和int似乎没有帮助.

.net c#

7
推荐指数
1
解决办法
3232
查看次数

标签 统计

.net ×1

c# ×1

int ×1

java ×1

long-integer ×1