Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 324
от 07.08.2003, 14:30

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 980
Отправлено ответов: 2206
Активность: 225.1 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Bobs
Статус: Профессиональный
Общий рейтинг: 116.2
[Подробней >>]
Marouder
Статус: Опытный
Общий рейтинг: 136.86
URL: Первый Хабаровский Форум
Телефон: (4212) 21-93-65
[Подробней >>]
Avl2k
Статус: Профессиональный
Общий рейтинг: 125.69
[Подробней >>]
 
Vdr
Статус: Опытный
Общий рейтинг: 112.25
[Подробней >>]
RedFox
Статус: Доверительный
Общий рейтинг: 105.69
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 975. Ув. эксперты, имеется вот такая строчка : if(!pt->m_bSync || FirstLock.IsLocked() ) Объясните пожалу... (ответов: 5)

Вопросов: 1, ответов: 5


 Вопрос № 975

Ув. эксперты, имеется вот такая строчка : if(!pt->m_bSync || FirstLock.IsLocked() )
Объясните пожалуйста, какие операции выполнятся в первую очередь - логическое "ИЛИ" или логическое отрицание ? А то я что-то не могу разобрать по таблице приоритетов операций :(
Спасибо.



Вопрос отправлен: 04.08.2003, 14:28
Отправитель: Jens

[Следующий вопрос >>] [Список вопросов]

Отвечает Bobs

Здравствуйте, Jens!
Сначала - логическое отрицание. Смело можно переписать как:
if ((!pt->m_bSync) || FirstLock.IsLocked())

Ответ отправлен: 04.08.2003, 15:00
Отправитель: Bobs


Отвечает Marouder

Добрый день, Jens!
Сначала отрицание, естественно. И если условие с отрицанием верно, то логическое "ИЛИ" вообще не будет выполняться.

Ответ отправлен: 05.08.2003, 02:56
Отправитель: Marouder


Отвечает Avl2k

Здравствуйте, Jens!
Приоритет у логического отрицания выше, чем у логического "или", следовательно, отрицание вычисляется раньше. Кстати, если !pt->m_bSync - единица, то FirstLock.IsLocked() вообще не будет вычисляться - т.н. короткая схема вычисления выражений.
С уважением, Avl2k.

Ответ отправлен: 04.08.2003, 15:36
Отправитель: Avl2k


Отвечает Vdr

Добрый день, Jens!
if(!pt->m_bSync || FirstLock.IsLocked() )
если что-то не понятно раставим скобки:
if((!pt->m_bSync)||(FirstLock.IsLocked()))
операция отрицания (!) имеет один из самых высоких приоритетов, а опрерация или(||)один из самых низких

Ответ отправлен: 04.08.2003, 15:19
Отправитель: Vdr


Отвечает RedFox

Доброе время суток, Jens!
Так как операция отрицания унарная, то она имеет больший приоритет, чем операция логического "ИЛИ" и проверка на нулевое значение pt->m_bSync будет произведена первой. Хочется отметить, что логические операции в C вычисляют минимальное число операндов, необходимых для определения результата выражения. Т.о. если значение pt->m_bSync будет равно нулю (т.е. первый операнд вернет истину), то второй операнд не будет вычисляться (и вызов функции не произойдет).

Ответ отправлен: 04.08.2003, 18:21
Отправитель: RedFox



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (36)
C / C++ (24)
Perl (3)
Builder / Delphi (19)
Pascal (24)
Basic / VBA (12)
Java / JavaScript (12)
PHP (10)
Криптография (9)
WinAPI (14)
Пользователю
Windows 95/98/Me (48)
Windows NT/2000/XP (55)
"Железо" (43)
Поиск информации (27)
Администратору
Windows NT/2000/XP (29)
Linux / Unix (11)
Юристу
Гражданское право (10)
Семейное право (6)
Трудовое право (7)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное