Przykładowy kod:
{
short x1 = 4;
short x2 = -4;
ushort x3 = (ushort)x1;
ushort x4 = (ushort)x2;
uint x5 = (uint)x1;
uint x6 = (uint)x2;
uint x7 = (uint)(ushort)x1;
uint x8 = (uint)(ushort)x2;
Debug.WriteLine(x3);
Debug.WriteLine(x4);
Debug.WriteLine(x5);
Debug.WriteLine(x6);
Debug.WriteLine(x7);
Debug.WriteLine(x8);
}
{
int x1 = 4;
int x2 = -4;
uint x3 = (uint)x1;
uint x4 = (uint)x2;
ulong x5 = (ulong)x1;
ulong x6 = (ulong)x2;
ulong x7 = (ulong)(ushort)x1;
ulong x8 = (ulong)(ushort)x2;
ulong x9 = (ulong)(uint)x1;
ulong x10 = (ulong)(uint)x2;
Debug.WriteLine(x3);
Debug.WriteLine(x4);
Debug.WriteLine(x5);
Debug.WriteLine(x6);
Debug.WriteLine(x7);
Debug.WriteLine(x8);
Debug.WriteLine(x9);
Debug.WriteLine(x10);
}
Wynik:
4 65532 4 4294967292 4 65532 4 4294967292 4 18446744073709551612 4 65532 4 4294967292
W skrócie po analizie możemy powiedzieć, że dla typów ze znakiem podczas ich konwersji na typ bez znaku o większym zakresie, jeśli liczba jest ujemna, nowe najstarsze bity uzupełniane są jedynkami. Jeśli liczba jest ujemna uzupełnienie następuje zerami.
Brak komentarzy:
Prześlij komentarz