C ++中的两个连续for循环,第二个循环不起作用

Two Consecutive for loop in C++, Second loop is not working

Objective:我有两个数组。第一个数组是:evenList,第二个是:oddList。我想以这种格式打印给定范围之间的偶数和奇数。

这是我的代码,

cout << "\nEven numbers between " << lowerLimit << " to " << upperLimit << ": ";

for(int i; i < evenList.size(); i++){
    cout << evenList[i] << "  ";
}

cout << "\n\nOdd numbers between " << lowerLimit << " to " << upperLimit << ": ";

for(int j; j < oddList.size(); j++){
    cout << oddList[j] << "  ";
}

第一个 for 循环打印所需的输出,但第二个循环不显示奇数。这是输出:

我已经阅读了一些关于for循环的内容,但我无法得到答案。如果有人面临相同的问题或问题并得到了答案,请分享。我真的很感激。

您没有初始化迭代器。 int i; 应该是 int i = 0;int j 也是如此。就像现在一样,这是未定义的行为。它只是第一次工作而不是第二次工作的机会,它可能两次都工作,根本不工作,立即崩溃或做一些完全不同的事情。


您的编译器是否针对此代码发出警告?理想情况下,它应该说 "uninitialized local variable 'i' used"。始终听取编译器警告,它们可以帮助指出一些常见错误。如果您的编译器在这里没有发出警告,请尝试查看是否可以将其配置为更严格的警告。

我有两点导致您产生不想要的输出。

  1. 初始化变量总是好的。在大多数情况下,它可能会导致您出现分段错误。在上面的代码中,您没有在 for 循环中初始化变量。
  2. 我没有使用过 C++,但我想您使用的是数组,evenListoddList。并且您使用的是条件 j<oddList.size()。如果 oddList 数组中没有任何元素,则此条件可能出错的唯一方法。检查这些数组中是否有任何元素。

尽量使用FOR EACH LOOP防止变量初始化混乱

for(string s : eventList){ cout << s << endl; }

第二个循环也一样。希望这次能成功

您还可以使用基于范围的 for 循环

cout<<"\nEven numbers between " << lowerLimit << " to " << upperLimit << ": ";
for (const auto &e: evenList)
{
    cout << e << "  ";
}

cout << "\n\nOdd numbers between " << lowerLimit << " to " << upperLimit << ": ";

for (const auto &o: oddList)
{
    cout << o << "  ";
}