鉴于此代码:
#include <cstdio>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
int main() {
int a;
string b;
cin >> a;
cin >> b;
return 0;
}
我尝试用 g++ 编译它并运行它。在将 char 分配给a
时,首先cin
似乎跳过了以下指令。
即使getchar()
在最后两行之间添加两条指令,getchar()
似乎也只有第二条被执行。有人可以准确地解释在低级别发生的事情,这似乎导致这些行明显不执行吗?
编辑:
使用此调试代码:
#include <cstdio>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
int a;
string b;
cin >> a;
cin >> b;
cout << "a is "<< a << endl;
cout << "b is "<< b << endl;
getchar();
return 0;
}
输入 1 测试
OUTPUT a is 1 b is test * 没有执行 getchar *
输入 1 测试
输出 a 是 1 b 是测试
输入 测试
输出 a 为 0 b 为
输入 _
// 跳过第二个cin
输出 a 为 0 b 为
注意:
getchar()
甚至没有执行一次。