我运行这个倒序为啥用while可以用for不行

img

img


有没有兄弟可以看看我这个是哪里不对吗我感觉这两个逻辑都差不多

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;
}

这样修改后的代码能够正确倒序输出数组元素。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^