考虑以下C ++代码:(codeblocks = IDE)
#include <iostream>
#include <stdio.h>
using namespace std;
int main() {
int a;
while(cin>>a) {
cout<<"You sir, Just Entered: "<<a<<endl;
if(!(cin>>a)) {
cout<<"Exiting"<<endl;
break;
}
}
}
如果我删除if(!(cin>>a)) {
条件并只写cout<<"You sir, Just Entered: "<<a<<endl;
,则输出。否则,目前,它不会在第(n + 1)个输入上输出。看这个图片:
答案 0 :(得分:2)
if(!(cin>>a)) {
正在捕捉您的下一个输入(例如,2,4,6,8)。
然后,由于否定if
!
语句
它不显示您的第二个输入,因为您在第二个a
之后没有打印cin
答案 1 :(得分:1)
您每次迭代都会捕获两次输入:一次在while
条件下,另一次在if
条件下。因此,只有两个输入中的一个被打印。这是因为即使if
条件失败,它已经读完了。
你的while循环已经进行了检查:如果用户输入非数字,它将不会迭代。您的固定代码很简单:
int main() {
int a;
while(cin>>a) {
cout<<"You sir, Just Entered: "<<a<<endl;
}
cout<<"Exiting"<<endl;
}
答案 2 :(得分:0)
如果你想检查非整数输入,这样做。
int a;
while(cin >> a)
{
cout << "Sir you entered: " << a <<endl;
}
cout << "Exiting"
<<endl;
检查在while loop
中自动完成,因为如果输入有效,则输入产生true
(在您的情况下为整数),这允许进一步输入。如果输入无效,程序将离开循环并显示exiting
消息。