Операторы битового сдвига имеют более низкий приоритет, чем аддитивные операторы, которые имеют более низкий приоритет, чем мультипликативные операторы, которые имеют более низкий приоритет, чем операторы увеличения / уменьшения.Также обратите внимание, что переменные оцениваются слева направо независимо от приоритета операторов между ними.
int z = ++y + y * a << 3 *2 * ++x + (x+=2);
Сначала делайте приращения.
102 + 102 * 2 << 3 * 2 * 2 + 4
Затем делайте умножение.
102 + 204 << 12 + 4
Затем выполните сложение.
306 << 16
Битовый сдвиг приводит к 20054016
.
Похоже, вы ошиблись при оценке выражений с x
вони в крайнем правом.