Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
46
ROZDZIAŁ4.OPERATORYIWYRAŻENIA
8)Wprzeciwnymprzypadku,jeżelitypoperanduzeznakiemmożeprzedstawić
wszystkiewartościtypuoperandubezznakowego,operandtypubezznakowego
jestkonwertowanydotypuoperandutypuzeznakiem.
9)Wprzeciwnymprzypadkuobydwaoperandykonwertowanedotypubez-
znakowegoodpowiadającegotypowioperanduzeznakiem(np.typemodpo-
wiadającymtypowiintjesttypunsignedint,atypemodpowiadającym
typowishortintjesttypunsignedshortint).
Konwersjetypówmożnatakżewymusićzapomocąjednoargumentowegoope-
ratorazwanegooperatoremrzutowania.Dokonujesiętegozapomocąkonstrukcji:
(nazwa-typu)wyrażenie
wktórejtypwyrażeniajestkonwertowanydonowegotypunazwa-typu.Przykłado-
wo,jeżelizadeklarujesięzmienną:
floata13.1415;
towyrażenie:
2+(int)a
będzietypustałopozycyjnegoibędziemiałowartośćrówną5.Oczywiściezapisten
niezmienizawartościzmienneja.
4.10
Wyrażeniewarunkowe
WyrażeniemwarunkowymwjęzykuCnazywasiękonstrukcjęzawierającąoperator
?:.Operatortenprzyjmujetrzyoperandy(zmiennelubwyrażenia).Jegodziałanie
jestnastępujące.Wkonstrukcji:
wyr1?wyr2:wyr3;
najpierwjestobliczanawartośćwyrażeniawyr1.Jeśliwartośćtajestniezerowa(co
wjęzykuCodpowiadaprawdzie),obliczanajestwartośćwyrażeniawyr2,wprze-
ciwnymzaśraziewartośćwyrażeniawyr3.
Jakoprzykładużyciawyrażeniawarunkowegomożnapodaćzapisobliczający
większązdwóchliczb:
x1(a>b)?a:b;
Jeżelioperandywyr2iwyr3wwyrażeniuwarunkowyminnychtypów,mają
zastosowaniezwykłeregułykonwersji.Naprzykładwartośćwyrażenia:
(i>0)?f:i;
wktórymzmiennaijesttypuint,azmiennaftypufloat,jesttypufloat
niezależnieodtego,czywartośćzmiennejijestwiększaodzera,czynie.
Nawiasywpierwszymwyrażeniuwpowyższychprzykładachniekonieczne
zuwaginabardzoniskipriorytetoperatora?:,ojedenstopieńwyższyodoperatora
przypisania.Zalecasięjednakichstosowaniezuwaginalepszączytelnośćkodu.