java Integer.MAX_VALUE,MIN_VALUE溢出

Der*_*gon 2 java integer max min

好吧也许我只是累了因为这个但我怎么能做到这一点?

int x = Integer.MAX_VALUE+10;
Run Code Online (Sandbox Code Playgroud)

// 也许

int x = Integer.MIN_VALUE-20;
Run Code Online (Sandbox Code Playgroud)

我只想要if语句来捕获x是否在"范围内"有点像这样:

if(x >= Intefer.MAX_VALUE || x <= Integer.MIN_VALUE){ //throw exception}
Run Code Online (Sandbox Code Playgroud)

但问题是,如果值如上所述,如MAX_VALUE + 10,则该值最终既不高于MAX VALUE也不低于MIN_VALUE并且不满足if条件...

编辑:澄清我的意思:我不想实际存储任何大于最大/最小值的值.想象一下:

一个字段,你写10 + 10,它说"好,那是20"接下来,有人可能会写1000000*100000,它也会回答答案,但是有人可能会写出超过最大/最小值的东西比如,10000000*1000000*1000000或类似的东西,然后程序应该都像是"举起来,这太高了!这里是你的"0"而不是"

Cra*_*lus 6

这可以通过两种方式解决:

第一种方式:

if(x + 10 <= x){ //Has wrapped arround so throw exception}

第二种方式(更好):

long x = Integer.MAX_VALUE+10L;
现在条件正常

if(x >= Integer.MAX_VALUE){ //throw exception}

  • `long x = Integer.MAX_VALUE + 10;`也溢出,因为加法是在类型`int`上执行的.使用`10L`或强制转换来在'long`类型中完成添加. (3认同)

Ern*_*ill 5

如果需要表示大于或小于限制的整数,则使用long而不是int变量.另一方面,如果你真的担心int包含大于的值的变量Integer.MAX_VALUE,那么就不要担心 - 这样的事情不可能存在.当值存储在a中时int,任何溢出或下溢都已发生.