Dev C++ 提供一个输出,但 Visual Studio 代码为相同代码提供另一个输出

Posted

技术标签:

【中文标题】Dev C++ 提供一个输出,但 Visual Studio 代码为相同代码提供另一个输出【英文标题】:Dev C++ gives one output, but Visual studio code gives another output for same code 【发布时间】:2021-04-06 22:22:13 【问题描述】:

为什么会这样? 任何想法,可能是由不同的编译选项引起的,或者是这里的代码错误。 询问您是否需要更多信息,我不知道为什么会这样。 如果这发生在这么小的代码上,那么大的代码会发生什么。

#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] &lt; niz[j + 1]) 超出数组的末尾——未定义的行为。 我担心您在niz[j + 1] 处访问您的数组越界,这是未定义的行为,任何事情都可能发生。 如果您提供了两个不同的输出并解释了您的代码应该做什么,那将会很有帮助。此外,如果您在发布代码(变量)之前将其翻译成英文,也会有所帮助。 @gmijo47 修复未定义行为并重试。 UB 意味着任何事情都可能发生,没有任何理由可以推理。 【参考方案1】:

试试这个解决方案。从 1 开始变量 j 并将 line[j - 1]line[j] 进行比较。在这种情况下,j 最多为 9 个。

#include <iostream>
using namespace std;
int main()

    int line[10];
    bool growing = false;
    cout << "Input 10 numbers:\n";

    for (int i = 0; i < 9; i++)
    
        cin >> line[i];
    

    for (int j = 1; j < 10; j++)
    

        if (line[j - 1] < line[j])
        
            growing = true;
            continue; // start next iteration and skips line 22 and 23
        
        growing = false;
        break; // stops the loop and moves to line 25
    

    if (growing)
    
        cout << "Growing";
    
    else
    
        cout << "Not Growing";
    

或者让它更简单:

#include <iostream>
int main()

    const int size = 10;
    int line[size];

    for (int i = 0; i < size; i++)
    
        std::cin >> line[i];
    

    for (int i = 1; i < size; i++)
    
        if (!(line[i - 1] < line[i]))
        
            std::cout << "Not Growing\n";
            return 0;
        
    

    std::cout << "Growing";


【讨论】:

以上是关于Dev C++ 提供一个输出,但 Visual Studio 代码为相同代码提供另一个输出的主要内容,如果未能解决你的问题,请参考以下文章

如何在visual c++中使用OpenGL

调试时如何在 Visual C++ 2010 中跟踪/输出时间戳

Visual Studio C++ - 无法输出预处理文件

Linux下Visual Studio与gcc的C++兼容性

使用 Visual Studio 2015、C++ 项目的 DLL 没有“复制到输出目录”

Visual C++(VC)6.0下载地址及安装教程