Этот
y=x>>2 + z<<1; //this gives the output 0
оценивается как
y=( x>>(2 + z)) << 1;
^^^^this performed first i.e 6, next x>>6 which is 0 and then 0<<1 is zero
из-за приоритета оператора.См. Страницу руководства оператора ;он говорит, что +
имеет более высокий приоритет, чем операторы сдвига.
И это
y=(x>>2) + (z<<1); //this gives the output 8
хорошо определено;()
имеет наивысший приоритет.