У меня есть этот код, который в основном берет два целых числа и сдвигает каждое и добавляет их.Однако после сложения я получил неверное значение.
Я нашел выход из этого (то есть, сохранив смещенные значения в новых переменных unsigned int и добавив их), но я хочу понять, почему это не сработало:
void change(uint8_t in[3], uint16_t out[2]){
out[0] = in[0]<<2 + in[1]>>2;
printf("%u\n",in[0]<<2 ); // outputs 48 --- correct
printf("%u\n",in[1]>>2 ); // output 1 --- correct
printf("%u\n",out[0] ); // output 768 --- wrong, I expected 49
}
int main(int argc, char const *argv[])
{
uint8_t in[3] = {12,6,9};
uint16_t out[2];
change(in,out);
return 0;
}