2016-05-01 3 views
1

Я изучил основы C++ несколько месяцев назад. Недавно я нашел цикл while, который выглядит так. Я хочу понять, как это работает.Как работает этот цикл C++ while?

while(cin>>n>>m,n||m) 
{ 
    does something; 
} 
+0

запятая возвращает оператор последнее значение. 'a, b' истинно, когда' b' истинно. –

+1

Для * экстремального * педантизма нужно набирать 'while (cin >> n >> m, void(), n || m)' –

ответ

4

operator , (operator comma) выполняет все команды в списке и возвращает значение последнего выражения, так cin>>n>>m,n||m равно

cin >> n >> m; 
n || m; 

И весь цикл будет работать, как это:

int n, m; 
cin >> n >> m; 
while(n || m){ 
    //some action 
    cin >> n >> m; 
} 
+1

Хотя компилятор может выполнять эти инструкции в любом порядке. – ForceBru

+4

Um no. В C++ 98 говорят все std :: ostream :: operator >>, оператор запятой и логический или оператор производят точку последовательности. У вас вообще нет выбора. (Более поздние стандарты на C++ говорят о «секвенировании до/после», а не о точках последовательности, но логика одна и та же.) –

+0

спасибо за объяснение, теперь я понимаю концепцию. – Reshad