D中的减量运算有区别吗?
我正在使用动态数组来实现我的堆栈。我写的流行音乐如下:D中的减量运算有区别吗?,d,D,我正在使用动态数组来实现我的堆栈。我写的流行音乐如下: int pop() { int n = arr[--arr.length]; return n; } 使用上面的代码,我在运行时得到一个范围冲突错误。但使用以下代码: int pop() { int n = arr[arr.length - 1]; arr.length--; return n; } 它很好用。我不明白为什么,对我来说,两者应该是相等的。我错
int pop() {
int n = arr[--arr.length];
return n;
}
使用上面的代码,我在运行时得到一个范围冲突
错误。但使用以下代码:
int pop() {
int n = arr[arr.length - 1];
arr.length--;
return n;
}
它很好用。我不明白为什么,对我来说,两者应该是相等的。我错过了什么
编辑:
也许这就是为什么--arr.length
会导致我将要访问的元素从数组中“删除”的原因
而且,
push(N)
只是arr~=N代码>在抓取元素之前,您正在移除该元素。您必须检索元素,然后减小数组的大小
--arr.length
减小数组的长度,然后返回新的减小大小。然后尝试执行int n=arr[arr.length]
下面是一个简单的int n=arr[--arr.length]
操作,其中包含一个元素:
- arr.length=1
- 最后一个元素位于位置0
- 评估
--排列长度
- arr减少到零元素
- arr.length返回0
- 计算
int n=arr[0]
。
- arr为空,中断
在抓取该元件之前,您正在移除该元件。您必须检索元素,然后减小数组的大小
--arr.length
减小数组的长度,然后返回新的减小大小。然后尝试执行int n=arr[arr.length]
下面是一个简单的int n=arr[--arr.length]
操作,其中包含一个元素:
- arr.length=1
- 最后一个元素位于位置0
- 评估
--排列长度
- arr减少到零元素
- arr.length返回0
- 计算
int n=arr[0]
。
- arr为空,中断