Если язык программирования C / Java / C++ и подобные:
a << 2 = 32 << 2 = 32 * (2 ^ 3) = 256
256 + b = 256 + 17 = 273
c - c = 3 - 3 = 0
b = 3
Теперь мы имеем следующее выражение: 273 & 0 | 3, выполняем операции последовательно:
1. 273 & 0 = 0 (& - побитовое И, если одно из значений = 0, то на выходе тоже имеем 0)
2. 0 | 3 = 3 (| - побитовое ИЛИ, если одно из значений = 0, то на выходе имеем другое значение)
Итог: a = 3.
Если язык программирования C / Java / C++ и подобные:
a << 2 = 32 << 2 = 32 * (2 ^ 3) = 256
256 + b = 256 + 17 = 273
c - c = 3 - 3 = 0
b = 3
Теперь мы имеем следующее выражение: 273 & 0 | 3, выполняем операции последовательно:
1. 273 & 0 = 0 (& - побитовое И, если одно из значений = 0, то на выходе тоже имеем 0)
2. 0 | 3 = 3 (| - побитовое ИЛИ, если одно из значений = 0, то на выходе имеем другое значение)
Итог: a = 3.