Microchip XC8を使用して、私は構造を持っています
int16_t test;
uint8_t msb = 0xff;
uint8_t lsb = 0xf4;
uint8_t hyst = 0xff;
test = ((((int16_t)msb)<<8) + (int16_t)lsb) + (int8_t)hyst);
符号付きの数値を使用したため、test は -13 (oxFFF3) になると予想されますが、0xF3 として計算されます。
なんで?
編集: gcc で試したところ、結果は期待どおりです。