0

我是新来的。这是一段 C++ 代码

int main()
{
    cout<<"?";
    int a;
    cout<<"?";
    cout<<"Enter no: ";
    cin>>a;
    cout<<"?";
    for(int i=0;i<5;i++)
        while(i>0)
        i=i/2;
    cout<<"?";
}

在这段代码中,嵌套的 for-while 循环基本上是一个无限循环。理想情况下,代码应打印 2 个问号...要求输入...输入...打印 1 个问号...并进入无限循环。但是,在请求输入后没有任何反应。这可能是因为编译器以我不知道的不同顺序读取代码......这是正在发生的事情吗?怎么了?

4

2 回答 2

2

这是因为 cout 是一个缓冲的 ostream ...这意味着您需要刷新它才能出现“第二个”问号:

int main()
{
    cout<<"?";
    int a;
    cout<<"?";
    cout<<"Enter no: ";
    cin>>a;
    cout<<"?";
    cout.flush();
    for(int i=0;i<5;i++)
        while(i>0)
        i=i/2;
    cout<<"?";
}

完成嵌套循环

你的嵌套循环也很奇怪......你想做什么?

于 2013-05-20T18:45:32.303 回答
0
std::cout.flush();

似乎对我有用。看起来好像流在进入循环之前没有被刷新。

于 2013-05-20T18:48:34.487 回答