【发布时间】:2021-04-06 22:22:13
【问题描述】:
Dev C++ 提供一个输出,但 Visual Studio 代码为相同代码提供另一个输出 为什么会这样? 任何想法,可能是由不同的编译选项引起的,或者是这里的代码错误。 询问您是否需要更多信息,我不知道为什么会这样。 如果这发生在这么小的代码上,那么大的代码会发生什么。
#include <iostream>
using namespace std;
int main() {
int line[10];
int i, j;
bool growing = false;
cout << "Input 10 numbers:\n";
for (i = 0; i < 10; i++ ) {
cin >> line[i];
}
if (i >= 10) {
for (j = 0; j < 10;) {
if (line[j] < line[j + 1]) {
growing= true;
j++;
}
else {
growing= false;
j = 12;
}
}
}
if (j >= 10 && growing== false) {
cout << "Not growing";
}
else if (j >= 10 && growing== true
) {
cout << "Growing";
}
}
【问题讨论】:
-
他们给出了什么输出,你给出了什么输入?
-
if (niz[j] < niz[j + 1])超出数组的末尾——未定义的行为。 -
我担心您在
niz[j + 1]处访问您的数组越界,这是未定义的行为,任何事情都可能发生。 -
如果您提供了两个不同的输出并解释了您的代码应该做什么,那将会很有帮助。此外,如果您在发布代码(变量)之前将其翻译成英文,也会有所帮助。
-
@gmijo47 修复未定义行为并重试。 UB 意味着任何事情都可能发生,没有任何理由可以推理。
标签: c++ visual-studio dev-c++