przekazywanie argumentów do funkcji

0

Witam
Mam problem ze zrozumieniem sposobu działania przekazywania argumentow do funkcji.
Konkretnie, czy moglibyście mi wyjaśnić dlaczego taki kawałek kodu:

int g=1;
cout<<g++<<" "<<g++<<" "<<g++<<"\n";

Wypisuje: "3 2 1", a nie "1 2 3"?
Kompletnie tego nie rozumiem :(
Z góry dzięki za wyjaśnienia

0

u mnie wypisuje "1 2 3" :-)

0

hmm... nie do konca wyjasnia mi to w czym jest problem :(

z jakiego kompilatora korzystasz?
ja kompilowalem to g++ na dwoch roznych serwerach, kompilowalem visualem pod winda - i zawsze ten sam efekt: "3 2 1" :(

0

Skopiowałem ten fragment kodu do DevC++ i wyświetla "1 2 3". Na 100%.
Tak tesh powinno być :-)

0

Kompilator ma dowolność jeżeli chodzi o kolejność obliczania parametrów funkcji.

0

No ale chwila. Tu mamy do czynienia z funkcjami operatorowymi. A ich wywołanie jest już w określonej kolejności. Potem potestuje. Ogólnie odradzam używania takich zapisów, bo zawsze są z tym problemy.

0
lmmilewski napisał(a)

Kompilator ma dowolność jeżeli chodzi o kolejność obliczania parametrów funkcji.

Racja to wszystko wyjasnia, i to mimo tego, ze rzeczywiscie mamy tu tez operator <<, gdyz wyzszy priorytet ma tutaj ++. To co dostaniemy na wyjsciu zalezy od tego, ktora sposrod tak samo uprzywilejowanych 3 operacji inkrementacji zostanie wykonana jaki pierwsza, a kolejnosc operacji << nie ma znaczenia.
Dzieki za pomoc :)

0

Na kompilatorze g++ wypisuje: 3 2 1

A teraz mistrzostwo, na VC++ 8.0 wypisuje 1 1 1 :-|

0

Może to być związane z tym, że operacje wypisywania na ekran są wykonywane od prawej strony, dlatego jest wyświetlane "3 2 1". Operator <<

Ja sprawdzałem na C++ Builder 6 i też mam "3 2 1"

0

W prawidłowej kolejności wyświetla po rozbiciu tego na trzy cout-y:

cout<<g++;<br>cout<<g++;<br>cout<<g++;<br>

Może to być związane z tym że kompilator najpierw przygotowuje sobie operacje której wyniki mają być wypisane przez cout-y.

A co do tych trzech jedynek, to to samo jest w Visual C++ 6.0 gdy użyjesz pritnf.
</cpp>

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.