gpt4 book ai didi

c++ - 连续使用 cin cout 和 gets 时,C 指令正在重新排序

转载 作者:行者123 更新时间:2023-11-30 04:35:38 26 4
gpt4 key购买 nike

有谁知道这里连续使用 cin cout 和 gets 时为什么 C 指令被重新排序?我正在使用 Dev-C++ 4.9.9.2。

#include<iostream>
using namespace std;

int main(){
char a[10],b;
for(;;){
cout<<"\ncin>>b:";
cin>>b;
cout<<"gets(a):";
gets(a);
cout<<"cout<<a<<b:"<<a<<" "<<b<<"\n\n";
}
}

我得到如下输出:

cin>>b:132
gets(a):cout<<a<<b:32 1


cin>>b:465
gets(a):cout<<a<<b:65 4


cin>>b:312242
gets(a):cout<<a<<b:12242 3


cin>>b:1
gets(a):cout<<a<<b: 1

cin>>b:

似乎在 gets 中传递了 cin 的一些输入.. 而且指令似乎也被重新排序为:

cin>>b;
gets(a);
cout<<"gets(a):";

而不是,

cin>>b;
cout<<"gets(a):";
gets(a);

最佳答案

cin>>b 只读取一个字符,剩下的输入由后面的输入操作读取。所以 gets sill 有东西要读,不要阻塞。

在第一个 cin >> b 处,没有可用的输入。您在缓冲区中输入 '132\n'(来自终端的输入通常是逐行输入的),然后从中取出 1。 gets 读取下一个字符 32 和终止 gets 的\n。它不需要从终端读取更多内容。

关于c++ - 连续使用 cin cout 和 gets 时,C 指令正在重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5102222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com