gpt4 book ai didi

data-structures - 为什么在 jdk 中使用 "offset+length<0"来确定参数是否非法?

转载 作者:行者123 更新时间:2023-12-04 05:20:55 25 4
gpt4 key购买 nike

在jdk中,有很多地方可以检查array.eg的参数。

/*..........
*
* @throws IllegalArgumentException
* If <tt>offset</tt> is negative or greater than
* <tt>buf.length</tt>, or if <tt>length</tt> is negative, or if
* the sum of these two values is negative.
*
* @param buf Input buffer (not copied)
* @param offset Offset of the first char to read
* @param length Number of chars to read
*/
public CharArrayReader(char buf[], int offset, int length) {
if ((offset < 0) || (offset > buf.length) || (length < 0) ||
//$ offset+length
(**(offset + length) < 0)**) {
throw new IllegalArgumentException();
}
this.buf = buf;
this.pos = offset;
this.count = Math.min(offset + length, buf.length);
this.markedPos = offset;
}

为什么“(偏移+长度)<0”是必要的?

最佳答案

在 Java 中 int已签名,因此可能会发生两个正 int s 加在一起会产生负值。它被称为环绕式或 Integer Overflow

关于data-structures - 为什么在 jdk 中使用 "offset+length<0"来确定参数是否非法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694505/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com