所以我有一个这样的程序:
#include <iostream>
using namespace std;
int factorial(int x) {
int result = 1;
for(x; x > 1; --x) {
result*=x;
}
return result;
}
int main() {
// your code goes here
int n;
std::cin >> n;
for(int i = 0; i < n; ++i) {
std::cout<< "\n";
std::cout << "entering for loop ";
int x;
std::cin >> x;
std::cout << "entering fac ";
std::cout << factorial(x);
std::cout << "leaving fac ";
std::cout << "leaving for loop ";
std::cout << "\n";
}
return 0;
}
当我运行程序而不是一次输入一个输入时,我将所有输入同时输入到终端中。给它输入如下:
4
1
2
5
3
程序输出:
进入循环进入fac 1离开fac离开循环
进入循环进入fac 2离开fac离开循环
进入循环进入fac 120离开fac离开循环
进入循环
如您所见,它没有收到stdin的最后一个值。为什么会发生这种情况,有人可以解释一下吗?
答案 0 :(得分:1)
你可能已经忘记了最后一个新行。
如果您不在最后按回车键,代码仍在此行等待:
std::cin >> x;