簡體   English   中英

使用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 << ...再次返回cout 然后,問題是,編寫語句是什么意思

while( cout );

要么

if (cout) ...

cout對象具有此處使用的布爾值轉換 它的實現是檢查!fail() ,所以

if (cout) ...

相當於

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

do { ... }
while(cout);

相當於

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

最后,如果流無法生成輸出 ,則fail返回true。

事實上有些人這樣做(即運行一個功能作為條件評估的一部分)。 它在shell腳本中是有意義的,但是如果你沒有使用shell腳本,有時候不清楚某些函數的返回值是什么。 我無法告訴你什么cout <<“message”隨便返回,但我知道如果你把它寫在循環體內,它會做我想要的,如果我不做的話,它會“扔掉”返回值不要用它。

要編寫包括你的未來在內的其他人可以理解的更清晰的代碼,我只會評估明顯返回true / false的條件,而不是“0 / not-0”或“0/1”,這些條件可能在不同語言中有所不同。

最重要的是,讓編譯器為您提高效率,為其他人提供代碼,而不是編譯器。

如果要測試條件執行輸出,則需要執行此操作或在循環內添加另一個條件測試並維護它們,這是一個等待發生的錯誤。

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

這是難得一見cout <<在任何條件下本身來,因為你通常可以假設它會成功,除非你的機器是着火了。

另一方面, 提取運算符>>通常屬於一個條件;

while (cin >> x)

是慣用的C ++。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM