Kategorie szkoleń | Egzaminy | Kontakt

Odpowiedź (1)

  • 2

Jeśli którykolwiek z operandów całkowitych jest typu long, to operacje arytmetyczne są wykonywane z precyzją 64 bitów. W pozostałych przypadkach operacje arytmetyczne na typach całkowitych są wykonywane z precyzją 32 bitów.
Można się o tym łatwo przekonać np. próbując skompilować poniższy kod:

byte b1 = 1;
byte b2 = 2;
byte b3 = b1 + b2; // błąd kompilacji


W ostatnim wierszu dostaniemy błąd kompilacji: "Type mismatch: Cannot convert from int to byte" oznaczający niezgodność typów i brak możliwości automatycznej konwersji typu int do byte. Wyrażenie po prawej stronie przyjmuje wartość 3, ale jest typu int i nie może być zawężone do typu byte.
Taka operacja jest możliwa tylko "na jawne życzenie" programisty. W takim przypadku należy kod poprawić, uzupełniając go o operację rzutowania:

byte b1 = 1;
byte b2 = 2;
byte b3 = (byte)(b1 + b2); // = 3

 

 

  • Odpowiedział
  • @ | 26.06.2013
  • TRENER MODERATOR ALTKOM AKADEMII