Нормальный человек подумает, что ответ на вопрос выше: 1. Но компьютер не человек, как и те, кто помнят наизусть приоритет операций😆. Эти машины ответят 0. Почему?



Потому что приоритет оператора сравнения больше приоритета битового И. Поэтому в начале сравнятся 1 и 0. Будет 0. А И с нулем будет всегда нуль. Ожидаемым результат будет, если расставить скобки:



#include <iostream>



int main() {

int i = 10;

std::cout << ((i & 1) == 0);

}





Чтобы вас больше нельзя было перехитрить, приведу здесь приоритеты операций в С++.



1. Постфиксный инкремент/декремент: ++, --

2. Вызов функции: ()

3. Индексный доступ: []

4. Доступ к члену: ., ->

5. Префиксный инкремент/декремент: ++, --, унарный плюс (+), унарный минус (-), логическое отрицание (!), побитовое дополнение (~), разыменование (*), взятие адреса (&), приведение типа (static_cast, dynamic_cast, reinterpret_cast, const_cast), sizeof

6. Операторы умножения: *, /, %

7. Операторы сложения: +, -

8. Побитовые сдвиги: <<, >>

9. Операторы сравнения: <, >, <=, >=

10. Операторы равенства: ==, !=

11. Побитовое И: &

12. Побитовое исключающее ИЛИ: ^

13. Побитовое ИЛИ: |

14. Логическое И: &&

15. Логическое ИЛИ: ||

16. Тернарный оператор: ? :

17. Операторы присваивания: =, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=

18. Оператор запятой: ,



Вообще, ставить скобки - самое универсальное правило, которое здесь можно придумать, чтобы не попадаться на такие приколы. Сильно не уверен, что стоит прям заучивать эти приоритеты. Скобки даже на уроках математики приучают ставить, поэтому это всем понятная нам концепция. А стихотворение забывается через 0.000234 секунды после прочтения (а иногда и во время). Выводы делайте сами.



Компилятор, кстати, может стать тут вашим помощником. Какие-то из них и без опций показывают ворнинг об опасности неожиданных результатов из-за порядка приоритета операций. Но чтобы было наверяка, просто добавьте опции компиляции -Wall -Wextra(ну или на крайняк -Wparentheses) и вам обязательно все покажут и расскажут, что вы за черт по жизни где вы могли бы облажаться.



Stay alert. Stay cool.