-
- Не годится, может быть разночтение, потому что != не требует логических операндов слева и справа и оставляет их тип и значения, в то время как нормальная логическоя операция, && например, принудительно применит сравнение с нулём. Вот такая запись Олдфаг(220 знак., 23.12.2016 22:21, )
- припомнилось - чтение бита порта по маске обычно оборачиваю !!(port & mask) - Vit(24.12.2016 11:44)
- А зачем именно так? - Bill(26.12.2016 09:40)
- Потому что позже может захотеться сравнить два разных бита, полученных по разным маскам. И, что самое смешное, они иногда таки будут между собой равны :) - Скрипач(26.12.2016 09:52)
- Операция двойного отрицания попросту будет проигнорирована компилятором еще на этапе оптимизации. Или нет? - Bill(26.12.2016 10:19)
- или нет - Vit(26.12.2016 12:04)
- Нет, она превратит целый тип в bool, что и требуется - Petrovich(26.12.2016 11:03, )
- Ну, ну... - Bill(26.12.2016 11:30)
- forum.vingrad.ru Petrovich(18 знак., 26.12.2016 12:19, )
- А вы сами проверяли? - Bill(26.12.2016 13:03)
- Конечно! Каждый может проверить int a=100; printf("%d\n", !!a ); Petrovich(3 знак., 26.12.2016 13:09, )
- Должно выдать "!!100" :-) - SciFi(26.12.2016 13:12)
- Конечно! Каждый может проверить int a=100; printf("%d\n", !!a ); Petrovich(3 знак., 26.12.2016 13:09, )
- А вы сами проверяли? - Bill(26.12.2016 13:03)
- forum.vingrad.ru Petrovich(18 знак., 26.12.2016 12:19, )
- Ну, ну... - Bill(26.12.2016 11:30)
- Обожаю обсуждения на тему "Си для чайников"(типа сарказм)Скучно, господа. - SciFi(26.12.2016 10:34)
- :) - Bill(26.12.2016 11:29)
- Операция двойного отрицания попросту будет проигнорирована компилятором еще на этапе оптимизации. Или нет? - Bill(26.12.2016 10:19)
- Очевидно же: целое число "ноль/не ноль" преобразовать в "ноль/единица". В дальнейшем можно присваивать переменной типа bool, сравнивать с ней и т.д. - SciFi(26.12.2016 09:52)
- Потому что позже может захотеться сравнить два разных бита, полученных по разным маскам. И, что самое смешное, они иногда таки будут между собой равны :) - Скрипач(26.12.2016 09:52)
- А зачем именно так? - Bill(26.12.2016 09:40)
- припомнилось - чтение бита порта по маске обычно оборачиваю !!(port & mask) - Vit(24.12.2016 11:44)
- тем что работает с числами, а не с логическими значениями? Пример: 2^^3 было равно 0(false), а 2!=3 равно 1(true) - AlexG(23.12.2016 21:36)
- надо так: !a != !b. или так: !a ^ !b. - SciFi(23.12.2016 21:37)
- что можно привести к нужному виду я знаю :) - AlexG(23.12.2016 21:43)
- Но тогда можете понять что !a ^ !b равен !a ^^ !b - Олдфаг(23.12.2016 22:26, )
- конечно - AlexG(23.12.2016 22:36)
- Но тогда можете понять что !a ^ !b равен !a ^^ !b - Олдфаг(23.12.2016 22:26, )
- что можно привести к нужному виду я знаю :) - AlexG(23.12.2016 21:43)
- надо так: !a != !b. или так: !a ^ !b. - SciFi(23.12.2016 21:37)
- Называется по другому :) - Codavr(23.12.2016 21:25)
- Не годится, может быть разночтение, потому что != не требует логических операндов слева и справа и оставляет их тип и значения, в то время как нормальная логическоя операция, && например, принудительно применит сравнение с нулём. Вот такая запись Олдфаг(220 знак., 23.12.2016 22:21, )