Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys

8.5.6 & - merkillä monta eri merkitystä

Vielä eräs inhottava puoli on se, että samalle merkille & (eikä tämä ole edes ainoa kuormitettu symboli) on otettu useita eri merkityksiä riippuen siitä missä yhteydessä merkki esiintyy:

8.
Osoiteoperaattori: Jos & on jo olemassa olevan muuttujan edessä, otetaan muuttujan osoite. - scanf("%d",&matka_mm);
2.
Referenssin esittely : Jos & on muuttujan esittelyn yhteydessä, esitellään viitemuuttuja (referenssi) - int &rMatka_mm
3.
Bittitason AND-operaattori: Jos & esiintyy kahden lausekkeen välissä, on kyseessä bittitason JA-operaattori: parillinen = luku & 0xfffe
4.
Looginen AND-operaattori: Jos & esiintyy 2-kertaisena kahden lausekkeen välissä, on kyseessä looginen JA-operaattori:
if ( kello < 23 && 0 < rahaa ) .. .

Jos selviämme tästä &- sekamelskasta, selviämme lopuistakin ongelmista C++:n kanssa.

Yleensä AND operaatiot eivät aiheuta sekaannusta, mutta jokin muistisääntö tarvitaan siihen milloin kirjoitetaan * ja milloin &. Olkoon se vaikka:

Vinkki
A

Tähdet taivaalla

8.
Jos kyseessä on osoiteparametrin välitys tulee * ylös, koska tähdet ovat taivaalla ja niitä osoitetaan, tällöin &- merkit tulevat alas!
2.
Jos kyseessä on parametrin välitys referenssin avulla, ei tarvitse tähtäillä, joten tähtiä ei tule ja jokainen merkki siirtyy pykälän ylöspäin, eli & merkit ylös ja alhaalle ei jää mitään!
3.
Tavallisessa arvoparametrin välityksessä ei tarvita mitään ihmemerkkejä, mutta ei saada ihmeitä aikaankaan!

Kertaamme "problematiikkaa" vähän myöhemmin, kun katsomme tarkemmin mitä aliohjelmakutsu oikein tarkoittaa.


Ylös Edellinen Seuraava Otsikkosivu Hakemisto Sisällys