使用 cout 语句执行 while 循环
Do while loop with a cout statement
所以我有一个关于 do
/while
循环的一般性问题。我正在学习 C++,我知道你可以写出类似的东西:
do{
....
} while(a<10 && cout<<"message");
关键是,我知道这在 C++ 中是可能的,但我们真的这样做了吗?我的意思是,“cout
”里面的东西?
你的 while 循环等同于
do {
...
cout << "message";
while(a < 10 && cout);
因为cout << ...
又是returnscout
。
那么,问题来了,写成
这样的语句是什么意思
while( cout );
或
if (cout) ...
cout
对象有一个 conversion to boolean 在这里使用。它的实现是检查 !fail()
,所以
if (cout) ...
等同于
if (!cout.fail()) ...
和
do { ... }
while(cout);
等同于
do { ... }
while(!cout.fail());
最后,fail
returns 如果流 failed to produce output 为真。
事实是有人这样做(即 运行 作为条件评估一部分的函数)。它在 shell 脚本中有意义,但如果您不使用 shell 脚本,有时不清楚某些函数的 return 值是什么。我不能直接告诉你 cout<<"message" return 是什么,但我知道如果你把它写在循环体内,它会做我想做的,它会 'throw away' return 值,如果我不使用它。
为了编写其他人(包括您未来的自己)可以理解的更清晰的代码,我只会评估显然 return true/false 而不是“0/not-0”或“0”的条件/1" 在不同的语言中可能有所不同。
底线是,让编译器为您提高效率,为其他人而不是编译器编写代码。
如果你想在测试条件后执行输出,你需要要么这样做,要么在循环中添加另一个条件测试并维护它们,这是等待发生的错误。
do {
if (a < 10)
cout << "message";
} while (a < 10);
虽然在任何情况下都很少cout <<
单独,因为您通常可以假设它会成功,除非您的机器着火了。
另一方面,提取 运算符 >>
通常属于条件;
while (cin >> x)
是惯用的 C++。
所以我有一个关于 do
/while
循环的一般性问题。我正在学习 C++,我知道你可以写出类似的东西:
do{
....
} while(a<10 && cout<<"message");
关键是,我知道这在 C++ 中是可能的,但我们真的这样做了吗?我的意思是,“cout
”里面的东西?
你的 while 循环等同于
do {
...
cout << "message";
while(a < 10 && cout);
因为cout << ...
又是returnscout
。
那么,问题来了,写成
while( cout );
或
if (cout) ...
cout
对象有一个 conversion to boolean 在这里使用。它的实现是检查 !fail()
,所以
if (cout) ...
等同于
if (!cout.fail()) ...
和
do { ... }
while(cout);
等同于
do { ... }
while(!cout.fail());
最后,fail
returns 如果流 failed to produce output 为真。
事实是有人这样做(即 运行 作为条件评估一部分的函数)。它在 shell 脚本中有意义,但如果您不使用 shell 脚本,有时不清楚某些函数的 return 值是什么。我不能直接告诉你 cout<<"message" return 是什么,但我知道如果你把它写在循环体内,它会做我想做的,它会 'throw away' return 值,如果我不使用它。
为了编写其他人(包括您未来的自己)可以理解的更清晰的代码,我只会评估显然 return true/false 而不是“0/not-0”或“0”的条件/1" 在不同的语言中可能有所不同。
底线是,让编译器为您提高效率,为其他人而不是编译器编写代码。
如果你想在测试条件后执行输出,你需要要么这样做,要么在循环中添加另一个条件测试并维护它们,这是等待发生的错误。
do {
if (a < 10)
cout << "message";
} while (a < 10);
虽然在任何情况下都很少cout <<
单独,因为您通常可以假设它会成功,除非您的机器着火了。
另一方面,提取 运算符 >>
通常属于条件;
while (cin >> x)
是惯用的 C++。