Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Что означает такая конструкция?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
espectro
Пытаюсь разобраться с примером мышки то Atmel и не могу понять что означает это присвоение, нигде такого не встречал.


Код
g_b_send_ack_report = (0!=g_hid_mouse_report[0]);
skripach
g_b_send_ack_report присваивается либо "1" либо "0", в зависимости от истинности выражения в скобках.
Хотя могу ошибаться, в Си новичок.
baralgin
результатом операции "0!=g_hid_mouse_report[0]" будет "да" или "нет" - вот это и присвоится. В развёрнутом виде это:
Код
if( 0 != g_hid_mouse_report[0] )
{
    g_b_send_ack_report = true;
}
else
{
    g_b_send_ack_report = false;
}

если это чистый си, то вместо false и true будет "0" и "не 0" соответственно.
espectro
Т.е. это сокращенный вариант от

Код
g_b_send_ack_report = ( (g_hid_mouse_report[0]) !=0)? TRUE : FALSE);

?
baralgin
espectro Ну собственно да. Разве что маленькая мелочь: вы явно задаёте значения TRUE и FALSE(где-то в stdbool.h определены или самостоятельно), а в первом случае это сделает компилятор. Не уверен, что TRUE будет обязательно 1. Но на логике программы это вряд ли отразится.

ps: smile.gif
Код
#define TRUE FALSE //счастливой отладки
espectro
baralgin, спасибо.
sigmaN
Цитата
#define TRUE FALSE //счастливой отладки
в оригинале там ещё одно словечко было smile.gif)))))))))))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.