Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
72
30PodstawyC++
któryjestoczywiścienieprawidłowy.Dlaczegotaksięstało?Problemtkwiwzłymtypie
danychwlinii[4].Dzieleniestałejcałkowitej5przezinnąstałącałkowitą9dajewrezul-
tacie0.SamezmienneTFiTCzostałypoprawniezadeklarowanezużyciemtypudouble.
OdejmowanieTF32wlinii[4]niestanowiwięcproblemu,ponieważstałacałkowita32
zostaniewypromowanadotypudouble.Zatemrezultatrównieżbędzietypudouble.Ale
rezultattenpomnożonyprzez0wypromowanedotypudoublewyprodukuje0,zgodnie
zpokazanymwynikiem.Prawidłowawersjategokoduwyglądanastępująco:
4
TC:(TF-32.o)*(5.o/9.o);
Niemieszamytutajróżnychtypówdanychinieliczymynażadnezakulisowepromo-
cje.Wlinii[4]wszystkiezmienneistałetegosamegotypudouble.Terazdzieleniejest
prawidłoweiwyświetlanajestpoprawnaodpowiedź:
1ooFahrenheit:37.7778Celsius
Tabela3.1prezentujepewnepodstawowetypywbudowanewrazzichwłasnościami,
takimijakdługośćwbajtachireprezentacjawartości.Wiedzatajestniezbędnapodczas
wybieraniatypudoreprezentowaniawprogramiewartościdanych.Reprezentacjawartości
określa,czymożemyprzechowywaćwartościdodatnielubujemne,atakżeto,czymogą
byćoneułamkami.Długośćzmiennejwpływanaprecyzjęprzechowywanejreprezenta-
cji.Zagadnieniateomawianebardziejszczegółowowrozdziale7.Informacjenatemat
długości(wbajtach)każdegotypumożemyuzyskaćzapomocąoperatorasizeof(zobacz
opisoperatorówzGRUPY3wtabeli3.15).Jakpokazanowtabeli3.1,tylkotypcharma
długośćrównądokładnie1bajtowi9.Pozostałetypywymagająwięcejniż1bajta.Ichdo-
kładnedługościmogąsięróżnićwzależnościodsystemu,jednakponiższestwierdzenia
będązawszeprawdziwe:
sizeof(char)::1
<:sizeof(short)
<:sizeof(int)
<:sizeof(long)
<:sizeof(longlong)
WjęzykuC++,gdytworzonyjestjakiśobiekt,wykonywanedwierzeczy:
.Przydzielanajestwystarczającailośćpamięci,abymożnabyłoprzechowaćtenobiekt.
.Obiektjestinicjalizowany(jeślidostępnajestodpowiedniafunkcjainicjalizacji,nazy-
wanakonstruktorem).
Jakjużnadmieniliśmywcześniej,wszystkieobiektypowinnybyćinicjalizowanepodczas
tworzenia.Jestniezwykleważne,abyzmiennaprzezcałyczasmiałaprzewidywalnąwartość.
Zwyklemożemytołatwoosiągnąćwprzypadkubardziejzłożonychobiektów,ponieważ
9Podstawowąrolątypucharjestprzechowywanieznakówwformiejednobajtowejreprezentacji
kodówASCII(www.ascii.com).Dlasymbolimiędzynarodowychwykorzystywanyjestdwubajtowysys-
temUnicode.