Arlleex 5 April 16 Posted April 16 · Report post 7 минут назад, Darth Vader сказал: Для любой операции: +, -, *, /, &, |, ^, <<, >> значение из переменной в памяти надо считать в регистр, произвести операцию в регистре и записать результат обратно в переменную в памяти. Что-то Вы не то говорите (или смысл другой), ибо volatile u8 i; void func() { u8 j = i >> 1; ... } i здесь после сдвига не изменит своего значения. Quote Share this post Link to post Share on other sites More sharing options...
Darth Vader 0 April 16 Posted April 16 · Report post 3 часа назад, Arlleex сказал: или смысл другой Наверное. Имелось ввиду такое: uint8_t i; ++i; i = i+5; i = i<<3; i |= 1<<3; Т.е. когда надо изменить значение переменной, вычислив её новое значение из текущего. Любые конструкции, где им переменной стоит слева от знака присваивания, и, одновременно, справа от него участвует в выражении. Т.е. там, где значение переменной участвует в вычислениях, и, одновременно, в эту же переменную сохраняется результат этих вычислений. Quote Share this post Link to post Share on other sites More sharing options...