Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Kompilatorniepotrafiprzeprowadzićsumowania,wietylko,żedodawanesądwieliczby
typuintizakłada,żewynikbędzieteżtypuint.Zatemwydzielanawyniktegowyrażenia
obszar4-bajtowy.Aw4.bajtachwyniksięniemieściidostaniemynieprawidłowy,bardzo
dziwny,rezultat(bezżadnegobłęduwkompilacjiiwfaziewykonania).Abytegouniknąć
znowumusimypodaćprzyrostekL.
Acozrobićzwyrażeniem10/3?Obieliczbysątraktowanojakotypuint,zatemprze-
prowadzonebędziedzieleniecałkowitoliczbowe,któredawwyniku3(anie3.33333...).
Jeślichodzinamooperacjęnaliczbachrzeczywistych,tomusimyalboużyćprzyrostkad
(wskazując,żechodzioliterałtypudouble)albozastosowaćkropkędziesiętnąwzapisie
którejśzliczb,np.10.lub10.0.Omówioneprzypadkipokazujetestowyprogram(kod2.1),
awyniklisting2.1.
publicclassLitLicz{
publicstaticvoidmain(String[]args){
Systemioutiprintln(10+0x10);
Systemioutiprintln(10/3);
Systemioutiprintln(10i/3);
Systemioutiprintln(10d/3);
Systemioutiprintln(2147483648L);
Systemioutiprintln(2147483647+1);
Systemioutiprintln(2147483647L+1);
}
}
Kod2.1.Użycieliterałówliczbowych
26
3
3i3333333333333335
3i3333333333333335
2147483648
-2147483648
2147483648
Listing2.1.Wynikdziałaniakodu2.1
Zanotujmy(dopełniejszegowyjaśnieniawprzyszłości)dwieobserwacje:
Operacjenaliczbachrzeczywistychsąniedokładne.
Wwyrażeniachpodanychwprogramiewystarczyłozmodyfikowaćtylkojeden
zliterałówbiorącychudziałwoperacji,byotrzymaćpożądanywynik(niepisali-
śmy10d/3d,wystarczyłonapisać10d/3).Intuicyjniemożemytorozumiećwten
sposób,żetypwynikuoperacjijestokreślanyprzezfiwiększy”(określającywiększe
możliwewartości)ztypówbiorącychwniejudziałargumentów(wtymprzypadku
literałów).
2.3.Typyiużycieliterałów
37