for(;sta<end;sta++,end--)
【以下回答由 GPT 生成】
问题原因是for
循环的循环变量i
的数据类型为int
,当i
为0时,表达式i--
被执行,使i
变为-1。而arr
数组的索引必须为非负整数,否则会访问到越界内存,导致未定义行为。
解决方案是将for
循环的循环变量i
的数据类型改为size_t
,这是一种无符号整数类型,可确保索引为正整数。
修改后的代码如下所示:
#include <iostream>
using namespace std;
int main() {
int arr[] = {1, 2, 3, 4, 5};
size_t length = sizeof(arr) / sizeof(arr[0]);
for (size_t i = length; i > 0; i--) {
cout << arr[i - 1] << " ";
}
return 0;
}
这样修改后的代码能够正确倒序输出数组元素。
【相关推荐】