使用cout语句执行while循环

时间:2015-11-05 14:22:18

标签: c++ do-while

所以我对do / while循环有一般性问题。我正在学习C ++,我知道你可以写出类似的东西:

do{
....
} while(a<10 && cout<<"message");

关键是,我知道这在c ++中是可行的,但我们真的这样做吗?我的意思是,“cout”内容里面?

3 个答案:

答案 0 :(得分:8)

你的while循环等同于

do {
    ...
    cout << "message";
while(a < 10 && cout);

因为cout << ...再次返回cout。 然后,问题是,编写像

这样的语句意味着什么
while( cout );

if (cout) ...

cout对象在此处使用了conversion to boolean。它的实现是检查!fail(),所以

if (cout) ...

相当于

if (!cout.fail()) ...

do { ... }
while(cout);

相当于

do { ... }
while(!cout.fail());

最后,如果流failed to produce output,则fail返回true。

答案 1 :(得分:3)

事实是有些人这样做(即作为条件评估的一部分运行功能)。它在shell脚本中是有意义的,但是如果你没有使用shell脚本,有时候不清楚某些函数的返回值是什么。我无法告诉你什么cout&lt;&lt;“message”返回,但我知道如果你在循环体内写它,它会做我想要的,并且如果我将它“扔掉”返回值不要使用它。

要编写包括你的未来在内的其他人可以理解的清洁代码,我只会评估明显返回true / false的条件,而不是“0 / not-0”或“0/1”,这些条件可能会有所不同语言。

最重要的是,让编译器为您提高效率,为其他人提供代码,而不是编译器。

答案 2 :(得分:0)

如果你想在测试条件之后执行输出,你需要这样做或者在循环中添加另一个条件测试并维护它们,这是一个等待发生的错误

do {
    if (a < 10)
        cout << "message";
} while (a < 10);

在任何情况下都很少看到cout << ,因为你通常会认为它会成功,除非你的机器着火。

另一方面,提取运算符>>通常属于一个条件;

while (cin >> x)

是惯用的C ++。