оператор , в цикле

Anonimus2015cpp
Дата: 04.02.2015 19:39:19
Здравствуйте,

На всех ли компиляторах будут правильно обрабатываться операторы цикла после запятой:

QList<int> ints;
....
bool found_5=false;
for(int i=0;i<ints.size();i++)
{
    if(ints[i]==5)
        found_5=true,break;
}
Dimitry Sibiryakov
Дата: 04.02.2015 19:50:41

Anonimus2015cpp
found_5=true,break;

Эта конструкция работает совсем не так как ты думаешь.

Posted via ActualForum NNTP Server 1.5

Dimitry Sibiryakov
Дата: 04.02.2015 19:58:09

Dimitry Sibiryakov
Эта конструкция работает совсем не так как ты думаешь.

А, нет, наоборот: оно работает не так как я думаю. Но чтобы это понять мне пришлось
залезть в справочник приоритетов операций. Так что, по-моему, не стоит писать такой код:
твой преемник тебя проклянёт. Да и в чём смысл? На фигурных скобках экономишь?..

Posted via ActualForum NNTP Server 1.5

mayton
Дата: 04.02.2015 20:06:43
Dimitry Sibiryakov, было-бы еще забавнее если-бы был такой порядок.

if(ints[i]==5)
        found_5=break,true;
SashaMercury
Дата: 05.02.2015 02:09:57
Здравствуйте.

Dimitry Sibiryakov
Anonimus2015cpp
found_5=true,break;

Эта конструкция работает совсем не так как ты думаешь.


А как он думает и как правильно ? Спрашиваю потому, что не могу понять как можно понимать эту конструкцию двумя "разными правильными" способами
SashaMercury
Дата: 05.02.2015 02:11:11
mayton
Dimitry Sibiryakov, было-бы еще забавнее если-бы был такой порядок.

if(ints[i]==5)
        found_5=break,true;


Этот код разве скомпилируется ?)
MasterZiv
Дата: 05.02.2015 10:27:21
Anonimus2015cpp,

вроде как в операции " запятая " должны участвовать выражения.
break оператор, не выражение.

дна и смысла так писать нет.
строчку экономим?
wst
Дата: 05.02.2015 11:24:31
gcc 4.9.2 такое не ест, говорит expected primary-expression before break. В чем это можно скомпилировать?