C++:为什么它在替代基础上输出?
C++: Why Does It Output On Alternative Basis?
考虑以下 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) 个输入上输出。看这张图片:
if(!(cin>>a)) {
正在捕获您的下一个输入(例如 2、4、6、8)。
然后,由于否定 !
,它不会进入 if
语句
它不显示你的第二个输入,因为你在第二个 cin
之后没有打印 a
您每次迭代捕获输入两次:一次在 while
的条件下,第二次在 if
的条件下。因此,只有二分之一的输入被打印出来。那是因为即使 if
的条件失败了,到那时它已经读取了。
您的 while 循环已经进行了检查:如果用户输入非数字,它不会重复。您的固定代码很简单:
int main() {
int a;
while(cin>>a) {
cout<<"You sir, Just Entered: "<<a<<endl;
}
cout<<"Exiting"<<endl;
}
如果你想检查非整数输入,这就可以了。
int a;
while(cin >> a)
{
cout << "Sir you entered: " << a <<endl;
}
cout << "Exiting"
<<endl;
检查是在 while loop
中自动完成的,因为输入会产生 true
如果它有效(在您的情况下为整数),这允许进一步输入。如果输入无效,程序将退出循环并显示 exiting
消息。
考虑以下 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) 个输入上输出。看这张图片:
if(!(cin>>a)) {
正在捕获您的下一个输入(例如 2、4、6、8)。
然后,由于否定 !
if
语句
它不显示你的第二个输入,因为你在第二个 cin
a
您每次迭代捕获输入两次:一次在 while
的条件下,第二次在 if
的条件下。因此,只有二分之一的输入被打印出来。那是因为即使 if
的条件失败了,到那时它已经读取了。
您的 while 循环已经进行了检查:如果用户输入非数字,它不会重复。您的固定代码很简单:
int main() {
int a;
while(cin>>a) {
cout<<"You sir, Just Entered: "<<a<<endl;
}
cout<<"Exiting"<<endl;
}
如果你想检查非整数输入,这就可以了。
int a;
while(cin >> a)
{
cout << "Sir you entered: " << a <<endl;
}
cout << "Exiting"
<<endl;
检查是在 while loop
中自动完成的,因为输入会产生 true
如果它有效(在您的情况下为整数),这允许进一步输入。如果输入无效,程序将退出循环并显示 exiting
消息。