Promocja całkowita z operatorem <<

Podobne do pytaniaPromocja Bitshift i Integer?, Mam pytanie o promocję liczb całkowitych podczas korzystania z lewych przesunięć bitowych.

unsigned int test(void)
{
  unsigned char value8;
  unsigned int result;

  value8 = 0x12;
  result = value8 << 8;
  return result;
}

W tym przypadku, czy wartość 8 będzie najpierw promowana do niesygnowanej int, czy też będzie specyficzna dla implementacji?

6.5.7 Operatory przesunięcia bitowego... 3 Sematyka ...
Promocje całkowite są wykonywane na każdym z argumentów. Typ wyniku jest taki, jak promowany lewy operand. Jeśli wartość prawego argumentu jest ujemna lub jest większa lub równa szerokości promowanego lewego argumentu, zachowanie jest niezdefiniowane.

Mówi, że„Promocje całkowite są wykonywane na każdym z operandów”., ale co to jest zasada promocji?

Zakładam, że tak powinno byćconvert to int if lesser rank than int, ale nie mogę go znaleźć.

Pytam o to, ponieważ jeden kompilator (Renesas nc30wa) nie promuje do int, więc wynik jest zawsze 0 dla mojej próbki.

Na tej platformie znak ma szerokość 8 bitów i 16 bitów.

questionAnswers(2)

yourAnswerToTheQuestion