【发布时间】:2017-05-25 01:56:35
【问题描述】:
我只是在 C++ 中尝试 do while 循环,而我想出了一个想法,即在 do while 循环中的 while 之后的括号内包含描述或任何名称,可以做多项事情。
所以这是我的初始逻辑:我已经设置了一个 password 变量和一个 input 变量。如果这两件事匹配,那么它将退出循环并输出“正确的密码”,否则它将继续返回循环,输出“错误的密码”等等。这是我的代码:
// do while
#include<iostream>
using namespace std;
int main(){
int input, password=19960819;
do{
cout << "Type your password:" ;
cin >> input;
}while(input!=password && cout << "wrong password" << endl);
cout << "correct password" << endl;
return 0;
}
我期待即使我输入了正确的答案,我仍然会输出“错误密码”。我认为cout << "wrong password" << endl 部分将始终返回为true,无论如何也应该执行,并且唯一的因素是input!=password 部分。然而,结果实际上是完美的,这不是我所期望的......谁能解释一下逻辑?我一直在挑战自己不要使用if 或其他逻辑,而只是使用do while 逻辑来达到这个结果,但我不明白它现在工作的原因......
【问题讨论】:
-
在您最喜欢的 C++ 书籍中了解
&&(和||)的“短路”行为。 -
值得注意的是,如果你的逻辑期望两个语句都被执行,那么即使短路会导致错误,但对于其他事情来说真的很重要,比如能够做到
if ((foo != nullptr) && (foo->bar()))