Предположим, что мы имеем int
и хотим переключить его между 0
и 1
булевым способом. Я подумал о следующих возможностях:
int value = 0; // May as well be 1
value = value == 0 ? 1 : 0;
value = (value + 1) % 2;
value = !value; // I was curious if that would do...
- Третий, похоже, работает. Зачем? Кто решает, что
!0
есть1
? - Что-то не так с этим?
- Есть ли другие возможности? например побитовые операторы?
- Что обеспечивает лучшую производительность?
- Было бы все, что было бы идентично с
_Bool
(илиbool
от stdbool.h)? Если нет, каковы различия?
EDIT: Много замечательных ответов с большим количеством ценной информации, спасибо! К сожалению, я могу только принять его.