Скажите что - нибудь про это
От: dandy  
Дата: 07.07.08 06:18
Оценка:
return (it == end()) || it->second.is_free(ns_item.m_idx);


Re: Скажите что - нибудь про это
От: Socrat Россия  
Дата: 07.07.08 06:20
Оценка: -1 :))) :))
Здравствуйте, dandy, Вы писали:


D>
D>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>


Это код на С.
Re: Скажите что - нибудь про это
От: jazzer Россия Skype: enerjazzer
Дата: 07.07.08 06:47
Оценка: +1 :)
Здравствуйте, dandy, Вы писали:


D>
D>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>


D>


одни скобки лишние
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Скажите что - нибудь про это
От: x-code  
Дата: 07.07.08 06:51
Оценка: -1
Здравствуйте, dandy, Вы писали:


D>
D>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>


D>


наверное, автор этого кода гордится тем что он знает как работают логические операторы в С/С++, и что ему удалось записать все это в одну строчку...
а зря написал бы лучше нормально.
if(it == end()) 
   return true;
return it->second.is_free(ns_item.m_idx);

даже для хождения в отладчике удобнее было бы, не говоря уже о читабельности. хотя, если работаешь с таким кодом каждый день, то думаю ничего страшного в этом нет, вполне нормально.
Я тут видел недавно код... создается объект, в конструктор передаются какие-то параметры, а основная логика работы (включая активную работу с БД и сетью), выполняется в... деструкторе Может, это и круто, но вот понять этот код без детального изучения класса этого объекта нельзя. При первом просмотре можно даже не обратить внимания на одинокую локальную переменную, которая объявляется и после этого вообще не используется
Re[2]: Скажите что - нибудь про это
От: Аноним  
Дата: 07.07.08 07:48
Оценка:
XC>Может, это и круто, но вот понять этот код без детального изучения класса этого объекта нельзя. При первом просмотре можно даже не обратить внимания на одинокую локальную переменную, которая объявляется и после этого вообще не используется
Вообщето аккуратнее надо с одинокоми локальными переменными. Очень часто это автолоки, очень удобная вещь скажу я вам
Re[2]: Скажите что - нибудь про это
От: dandy  
Дата: 07.07.08 07:58
Оценка: :)
Здравствуйте, x-code, Вы писали:


D>>
D>>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>>


XC>
XC>if(it == end()) 
XC>   return true;
XC>return it->second.is_free(ns_item.m_idx);
XC>


Про это и хотел спросить:
Будет ли в первом варианте кода проверяться второе условие, если первое условие выполняется?
Если да, то ведь это скорее всего UB
Re[2]: Скажите что - нибудь про это
От: ArtDenis Россия  
Дата: 07.07.08 08:10
Оценка:
jazzer wrote:
>
> одни скобки лишние

Ага, но со скобками красивее
Posted via RSDN NNTP Server 2.1 beta
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[3]: Скажите что - нибудь про это
От: ned Австралия  
Дата: 07.07.08 08:28
Оценка: 1 (1) +2
Здравствуйте, dandy, Вы писали:

D>Про это и хотел спросить:

D>Будет ли в первом варианте кода проверяться второе условие, если первое условие выполняется?

Нет.
Re[2]: Скажите что - нибудь про это
От: Mr.Cat  
Дата: 07.07.08 08:39
Оценка:
Здравствуйте, Socrat, Вы писали:

D>>
D>>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>>

S>Это код на С.

Да что Вы говорите. Это же Haskell.
Re[3]: Скажите что - нибудь про это
От: jazzer Россия Skype: enerjazzer
Дата: 07.07.08 09:51
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>jazzer wrote:

>>
>> одни скобки лишние

AD>Ага, но со скобками красивее


Ладно, если сравнивать ники, то ты выиграл
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Скажите что - нибудь про это
От: Clevelus Россия http://clevelus.ru
Дата: 07.07.08 10:30
Оценка: 1 (1)
Здравствуйте, dandy, Вы писали:


D>
D>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>


Все записано вполне нормально и красиво.
Если непонятно что, то: it сравнивается с end() — получаем результат, который равен 1 (true), если они равны или 0 если не равны. Далее над результатом и second.is_free() выполняется логическое ИЛИ (то есть return возвращает 1 (true) если или прошлый результат или результат second.is_free() равен 1).

Как еще подробнее написать не знаю
Доброго времени суток! Мир Вам! С уважением Clevelus.
Если мой ответ понравился — оцените, ни на что не влияет, но будет приятно.
Re[2]: Скажите что - нибудь про это
От: dandy  
Дата: 07.07.08 10:57
Оценка:
Здравствуйте, Clevelus, Вы писали:

C>Все записано вполне нормально и красиво.

C>Если непонятно что, то: it сравнивается с end() — получаем результат, который равен 1 (true), если они равны или 0 если не равны.
Далее над результатом и second.is_free() выполняется логическое ИЛИ (то есть return возвращает 1 (true) если или прошлый результат или результат second.is_free() равен 1).

Если равны, то что получится в результате вызова end()->second.is_free?

C>Как еще подробнее написать не знаю


А подробнее и не нужно, нужно правильно.
Re[3]: Скажите что - нибудь про это
От: jazzer Россия Skype: enerjazzer
Дата: 07.07.08 11:01
Оценка: 2 (1)
Здравствуйте, dandy, Вы писали:

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


C>>Все записано вполне нормально и красиво.

C>>Если непонятно что, то: it сравнивается с end() — получаем результат, который равен 1 (true), если они равны или 0 если не равны.
D>Далее над результатом и second.is_free() выполняется логическое ИЛИ (то есть return возвращает 1 (true) если или прошлый результат или результат second.is_free() равен 1).

5.15/1

The || operator groups left-to-right. The operands are both implicitly converted to bool (clause 4). It
returns true if either of its operands is true, and false otherwise. Unlike |, || guarantees left-toright
evaluation; moreover, the second operand is not evaluated if the first operand evaluates to true.

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Скажите что - нибудь про это
От: рыбак  
Дата: 07.07.08 14:03
Оценка: :))
Здравствуйте, dandy, Вы писали:


D>
D>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>


D>


Это что... я вот регулярно встречаю такие перлы экономии:

if( f() ) return g(), 1;
Re[2]: Скажите что - нибудь про это
От: Кодт Россия  
Дата: 10.07.08 10:24
Оценка:
Здравствуйте, рыбак, Вы писали:

Р>Это что... я вот регулярно встречаю такие перлы экономии:

Р>
Р>if( f() ) return g(), 1;
Р>


Самый любимый (и иногда практикуемый) 0xbaadcode (в смысле тяжести сопровождения для невинных умов)
return CLock(m_CritSec), m_Something;
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[2]: Скажите что - нибудь про это
От: achp  
Дата: 10.07.08 10:28
Оценка: +1
Здравствуйте, Socrat, Вы писали:

D>>
D>>return (it == end()) || it->second.is_free(ns_item.m_idx); 
D>>


S>Это код на С.


Неправда. В Си такой код недопустим.
Re[3]: Скажите что - нибудь про это
От: ArtDenis Россия  
Дата: 10.07.08 11:05
Оценка:
achp пишет:
>
> Неправда. В Си такой код недопустим.

Очень даже допустим. Что именно тебя в нём смущает?
Posted via RSDN NNTP Server 2.1 beta
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re[4]: Скажите что - нибудь про это
От: achp  
Дата: 10.07.08 11:46
Оценка:
Здравствуйте, ArtDenis, Вы писали:

AD>Очень даже допустим. Что именно тебя в нём смущает?


Каюсь-каюсь. Как-то не дошло сразу, что is_free может быть указателем на функцию.
Re[3]: Скажите что - нибудь про это
От: degor Россия  
Дата: 14.07.08 20:06
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, рыбак, Вы писали:


К>Самый любимый (и иногда практикуемый) 0xbaadcode (в смысле тяжести сопровождения для невинных умов)

К>
К>return CLock(m_CritSec), m_Something;
К>


а оно вообще зачем? не вижу спецэфектов. по крайней мере на win32.
Re[3]: Скажите что - нибудь про это
От: Vamp Россия  
Дата: 14.07.08 20:52
Оценка: :)
А perl все равно не переплюнуть!
Да здравствует мыло душистое и веревка пушистая.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.