Re: if - оператор
От: Dj.ValDen Украина http://ua.linkedin.com/in/dvalchuk
Дата: 26.03.06 10:44
Оценка:
Здравствуйте, Vovka_R, Вы писали:

V_R>Госпада, подскажите пожалуйста слудующую вещь.

V_R>
V_R>bool f1()
V_R>{
V_R>  //...
V_R>}

V_R>bool f2()
V_R>{
V_R>  //...
V_R>}

V_R>void main()
V_R>{
V_R>  if( f1() || f2() )
V_R>  //Что-то делаем

V_R>  //...
V_R>}
V_R>

V_R>Так вот вопрос в следующем. Знаю точно, что если функция f1 выполнится, то следующее условие в операторе if даже проверяться не будет, т.е. f2 даже не вызовется. А вот и вопрос: определено ли такое поведение стандартом???

V_R>Спасибо!!!


Сорри что не прочитал весь тред снизу... Он слишком большой а я слишком ленивый
Может там и есть то на чём я заострю...
А заострить я хочу на том, что операторы то эти перегружаются... А как их перегрузили... Оно тебе нада потом левій код изучать?
Так что я советую использовать вложенные конструкции if
if (f1())
{
}
else if (f2)
{
}

Меньше проблем + намного читабельней
С уважением Denys Valchuk

IMHO чем больше мнений тем оптимальней выбор варианта... :)
Re[12]: if - оператор
От: Bell Россия  
Дата: 26.03.06 11:55
Оценка:
Здравствуйте, remark, Вы писали:

R>Можно примеры.


((CString *) &p->m_pszInfo)->CString::CString (strInfo);


Вот такой код прекрасно компилировлся и работал в VC6.

R>Явный вызов конструктора был документирован?


Нет, это не было документировано. Но привел я этот пример в ответ на

Так они ещё и свои особенности, которые противоречат СТАНДАРТУ, тщательно поддерживают.


Что касается документированых несоответствий, то я с трудом представляю себе производителя, который бы в новых версиях убрал бы эти самые несоотвтетсвия — это потеря совместимости со старым кодом, и весьма вероятная потеря клиента. Тут, конечно, спорить нет никакого смысла.
Любите книгу — источник знаний (с) М.Горький
Re[13]: if - оператор
От: remark Россия http://www.1024cores.net/
Дата: 26.03.06 15:00
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, remark, Вы писали:


R>>Можно примеры.


B>
B>((CString *) &p->m_pszInfo)->CString::CString (strInfo);
B>


B>Вот такой код прекрасно компилировлся и работал в VC6.


R>>Явный вызов конструктора был документирован?


B>Нет, это не было документировано. Но привел я этот пример в ответ на

B>

B>Так они ещё и свои особенности, которые противоречат СТАНДАРТУ, тщательно поддерживают.


Тут я, конечно, имел в виду особенности, которые документированы, а не баги и т.д.


B>Что касается документированых несоответствий, то я с трудом представляю себе производителя, который бы в новых версиях убрал бы эти самые несоотвтетсвия — это потеря совместимости со старым кодом, и весьма вероятная потеря клиента. Тут, конечно, спорить нет никакого смысла.

1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Re[2]: if - оператор
От: remark Россия http://www.1024cores.net/
Дата: 26.03.06 15:02
Оценка:
Здравствуйте, Dj.ValDen, Вы писали:

DV>Сорри что не прочитал весь тред снизу... Он слишком большой а я слишком ленивый

DV>Может там и есть то на чём я заострю...
DV>А заострить я хочу на том, что операторы то эти перегружаются... А как их перегрузили... Оно тебе нада потом левій код изучать?
DV>Так что я советую использовать вложенные конструкции if
DV>
DV>if (f1())
DV>{
DV>}
DV>else if (f2)
DV>{
DV>}
DV>

DV>Меньше проблем + намного читабельней

А я тогда советую ещё не использовать функцию f1(), вдруг её кто изменил



1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.