2017-07-04 88 views
4
string command; 
string bookName; 
while (cin >> command, command != "END") 
{...} 

在while循環的條件下,有一個逗號。 我知道可以使用&&||添加多個條件。while循環條件C++中「,」的用法是什麼?

但爲什麼用,

有沒有什麼好處?你能解釋一下用法和語法嗎?

+4

它是[逗號運算符](https://stackoverflow.com/questions/54142/how-does-the-comma-operator-work)。 –

+0

https://stackoverflow.com/questions/4364044/comma-separated-expression-in-while-loop-in-c這應該是有幫助的 –

+0

請參閱https://stackoverflow.com/questions/33561882/what-is-條件語句中的優勢/ 33562149#33562149 – MikeMB

回答

19

這是逗號運算符,也稱爲「求值和忘記」運算符。的a, b效果是:

  1. 評估a,包括任何副作用
  2. 丟棄它的值(即用它做什麼)
  3. 評估b
  4. 使用b結果作爲的結果整個表達式a, b

該循環的作者想要表達以下內容:

commandcin,然後進入循環體,除非command等於"END"

然而,他們會使用&&代替,這裏更好過,因爲cin >> command可能會失敗(即如果在找到字END之前達到輸入的結尾)。在這種情況下,,的條件將不會完成預期的操作(可能會永久循環,因爲command將永遠不會收到值END),而條件爲&&會做正確的操作(終止)。

+1

關於無限循環錯誤的優秀捕獲! –