ero un guardare il codice sorgente di a project, e ho notato il seguente statement (sia keyByte e codedByte sono di tipo byte
):C#: Il risultato di lanciare un numero intero negativo a un byte
return (byte)(keyByte - codedByte);
Sto cercando ora di capire quale sarebbe il risultato nei casi in cui keyByte è più piccolo di codedByte, che si traduce in un numero intero negativo.
Dopo alcuni esperimenti per capire il risultato di lanciare un intero negativo che ha un valore nella gamma [-255: -1], ho ottenuto i seguenti risultati:
byte result = (byte) (-6); // result = 250
byte result = (byte) (-50); // result = 206
byte result = (byte) (-17); // result = 239
byte result = (byte) (-20); // result = 236
Così, a condizione che -256 < a < 0
, sono stato in grado di determinare il risultato:
result = 256 + a;
la mia domanda è: devo sempre aspettare che questo sia il caso?
ripetere: hai assolutamente ragione. Poiché qualsiasi valore "negativo" è al di fuori del dominio di un "byte" .Net, prima Net promuove (con un valore integrale maggiore di 255). – paulsm4