Ganzzahlige Promotion mit dem Operator <<

Ähnlich wie bei der FrageBitshift und Integer-Promotion?, Ich habe eine Frage zur ganzzahligen Heraufstufung bei der Verwendung von Links-Bitverschiebungen.

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

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

Wird in diesem Fall der Wert8 zuerst auf unsiged int heraufgestuft oder ist er implementierungsspezifisch?

6.5.7 Bitweise Verschiebeoperatoren... 3 Sematics ...
Die ganzzahligen Beförderungen werden für jeden der Operanden durchgeführt. Die Art des Ergebnisses ist die des heraufgestuften linken Operanden. Wenn der Wert des rechten Operanden negativ ist oder größer oder gleich der Breite des heraufgestuften linken Operanden ist, ist das Verhalten undefiniert.

Es heißt, dass die"Die ganzzahligen Beförderungen werden für jeden der Operanden durchgeführt.", aber was ist hier die Werberegel?

Ich gehe davon aus, dass es sein sollteconvert to int if lesser rank than int, aber ich kann es nicht finden.

Ich frage dies, da ein Compiler (Renesas nc30wa) nicht auf int umstellt, das Ergebnis für mein Sample also immer 0 ist.

Auf dieser Plattform ist ein Zeichen 8 Bit breit und int 16 Bit.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage