Всем привет.
Столкнулся с непоняшкой:
// Объявляем два массива и инициализируем их
unsigned char A[5]={0xFF, 0x03, 0x00, 0x00, 0xB6};
unsigned short B[4]={0};
// Смотрим, что внутри
cout << (unsigned short)A[0] << " " ;
cout << hex << (unsigned short)A[0] << endl;
cout << (unsigned short)A[1] << " " ;
cout << hex << (unsigned short)A[1] << endl;
// Пробуем провернуть операцию:
B[0]=(A[1]<<8)&0x3FF ;
cout << " B[0] is: " << B[0] << endl;
А теперь немного изменим код:
B[0]=(A[1]<<8)&0x3FF[color=red] + 1[/color];
Вопрос - с чего вдруг так, по идее должно быть 301!
Если добавить скобок, то всё ОК:
B[0]=((A[1]<<8)&0x3FF) + 1[/color];