Eclipse C 扭曲代码流

Eclipse c++ twists code flow

本文关键字:代码 Eclipse      更新时间:2023-10-16

带有以下代码

#include <iostream>
using namespace std;
int main() {
    int num;
    cout << "Insert number: " << endl; // prints "Insert number:"
    cin >> num; //Reads num
    cout << num; //prints num
    system("PAUSE");
    return 0;
}    

我在日食的内部控制台中得到以下结果:

Insert number:         //code in line 6
3                      //code in line 7 (Input)
Press any button...    //code in line 10
                       //empty line after pressing any button
3                      //code in line 8?!?!?

我不知道为什么会发生这种情况。看起来Eclipse只是扭曲了代码的执行。但是为什么以及如何解决这个问题?

它称为 buffering 。对std::cout的输出是是缓冲,除非刷新缓冲区(在程序退出时发生),否则您将不会显示使用flushendl标准I/O操纵器。

显示PAUSE命令的输出是因为它绕过了过程的std::cout缓冲,并且直接写入控制台窗口,或者因为它冲洗了自己的内部缓冲区(PAUSE命令将作为无关的过程运行,具有自己的可能的缓冲)。