gpt4 book ai didi

c++ - 什么在这个 for 循环中重置迭代器的值?

转载 作者:太空宇宙 更新时间:2023-11-04 14:48:18 24 4
gpt4 key购买 nike

#include <iostream>
using namespace std;
int main() {
const int SIZE = 5;
double x[SIZE];
for(int i = 2; i <= SIZE; i++) {
x[i] = 0.0;
cout << i << endl;
}
}

输出:3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个01个2个3个4个...

如果 SIZE 被初始化为一个不同的值,迭代器将迭代直到它比该值少一,然后重置回零。如果 x 的数组更改为数据类型 int,则循环不会卡在自身上。如果对 x[i] 的赋值更改为任何非零数字,则在循环的最后一次运行期间将值更改为垃圾。

#include <iostream>
using namespace std;
int main() {
const int SIZE = 5;
double x[SIZE];
for(int i = 2; i <= SIZE; i++) {
x[i] = 1;
cout << i << endl;
}
}

输出:2个3个4个1072693248

#include <iostream>
using namespace std;
int main() {
const int SIZE = 5;
int x[SIZE];
for(int i = 2; i <= SIZE; i++) {
x[i] = 1;
cout << i << endl;
}
}

输出:2个3个4个5

最佳答案

您正在写超过 x 数组的末尾。 x[] 的范围从 0 到 SIZE - 1(或 4),你让你的索引 i == SIZE。

因此,该行为是未定义的,并且巧合的是,您在编写 x[5] 时覆盖了 i。

使用调试器。这是你的 friend 。

关于c++ - 什么在这个 for 循环中重置迭代器的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28969923/

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