ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
27 ноября
100400 Топик полностью
rezident (22.09.2007 02:33, просмотров: 899) ответил Неофит на Почему WinAVR по разному компилирует? И какие типы данных использовать?
~ (тильда) это битовая операция инверсии, а ! это логическая операция отрицания. Если вы не понимаете между ними разницы, то это печально. Результат операции логического отрицания может быть отличным от операции инверсии, в зависимости от типа применяемой логики (положительная логика - 0=false, (не 0)=true и отрицательная логика 0=true, (не 0)=false). Кто-нибудь возьмет и определит типы как #define true 0 #define false 1 и все! Трындец вашей программе настанет. Лично я предпочитаю всегда в логических операциях явно делать сравнение (с нулем, как это в ALU большинства микроконтроллеров реализовано), без выпендрежа и без глупой надежды, что 0 это всегда false, а !0 это всегда true. При таком подходе тип применяемой логики по-барабану.