Entier additionnant les blues, court += petit problème

Programme en C#:

short a, b;
a = 10;
b = 10;
a = a + b; //Error : Cannot implicitly convert type 'int' to 'short'.

//we can also write this code by using Arithmetic Assignment Operator as given below

a += b; //But this is running successfully, why?

Console.Write(a);
  • La première échoue à cause de courtes + short = int telle que définie dans le cahier des charges, tout comme octet + octet = int, cependant j'aurais attendu la deuxième aussi un échec, donc je suis impatient de voir le raisonnement ici.
  • avez-vous trouvé une raison quelconque ?
  • Cela est répondu de façon aussi détaillée que possible ci-dessous par Eric Lippert, donc je ne suis pas vraiment sûr de ce que votre demande ici. En bref est parce que a += b est le même que a = (short)(a+b)
  • Double Possible de byte + octet = int... pourquoi?