Keskustelut - C/C++ - && ja || -operaattorien suoritusjärjestys


appelsiini011 17:42 15.9.09 
Kysymys kuuluu, onko && ja || -operaattoreilla sama suoritusjärjestys kaikissa C++ -toteutuksissa?
Tarkemmin esimerkillä. Sanotaan että func1 ja func2 ovat funktioita, jotka tekevät jotain kivaa ja palauttavat sitten totuusarvon:


C++
if (func1() && func2())
{
    //...
}
 

Eli suoritetaanko kyseisessä tapauksessa kääntäjästä riippumatta func1 ennen func2:sta, ja jos func1 palauttaa arvon epätosi, onko aina niin ettei func2:sta suoriteta lainkaan?
editoitu: 17:47 15.9.09
Lebe80 17:47 15.9.09 
sähän voit testata ton laittamalla funktiot tekemään jotain, mikä näkyy jossain, esim. tekstinä.
thefox 18:40 15.9.09 
appelsiini011 kirjoitti:
Eli suoritetaanko kyseisessä tapauksessa kääntäjästä riippumatta func1 ennen func2:sta, ja jos func1 palauttaa arvon epätosi, onko aina niin ettei func2:sta suoriteta lainkaan?

Oikeassa olet. Hae Googlesta "C++ operator precedence" jos tarviit lisätietoa.
weicco 07:55 16.9.09 
Lebe80 kirjoitti:
sähän voit testata ton laittamalla funktiot tekemään jotain, mikä näkyy jossain, esim. tekstinä.


Olisi erittäin hankalaa testata tuota kaikilla kääntäjillä. Speksiä lukemalla asia selkenee paremmin. Saattaahan kääntäjissäkin olla toki bugeja, mutta ihmettelisin, jos näin yksinkertaisessa asiassa.
editoitu: 08:29 16.9.09
Grez 08:28 16.9.09 
Leben vinkki sopii tilanteeseen, jossa koodaaja ei ymmärrä speksin selostusta ja haluaa kokeilla käytännössä miten homma toimii. Appelsiinin kysymykseenhän se ei tosiaan sovellu, koska appelsiini oli ymmärtänyt speksin ihan oikein.