Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int a = 0;
int b = 4;
int c = 9;
a = b+++c;
cout << a;
return 0;
}
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int a = 0;
int b = 4;
int c = 9;
a = b+++c;
cout << a;
return 0;
}
Kod: Zaznacz cały
a = b++ + c;
Kod: Zaznacz cały
a = b + ++c;
Enkidu pisze:Ha! ale tutaj w ogóle nie było inkremetacji[..]
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int a = 0;
int b = 4;
int c = 9;
a = b+++c;
cout << a << endl << b;
return 0;
}
Kod: Zaznacz cały
a=++b+a;
Właśnie, że nie. Sprawdziłeś? Tutaj najpierw jest preinkrementacja, a potem sumowanie składników.Enkidu pisze:W tym wypadku też wyjdzie 13.Kod: Zaznacz cały
a=++b+a;
Bo w takiej kolejności działa postinkrementacja (w odróżnieniu od pre), a czym pisałem w pierwszym poście.Enkidu pisze:Ale ja cały czas pytam o wynik działania - czemu najpierw sumuje a potem dopiero inkrementuje?
?a=8+c
Dokładnie. Parser jest zachłanny (greedy), czyli dopasowuje jak największe kawałki od razu.kklimonda pisze:Ale to chyba nie jest niezdefiniowane, w tym przypadku interpretacja jest w miare prosta.
Kompilator rozbija b+++c na zmienną b, postinkrementację, sumę, zmienną b - w kolejności, w jakiej występują w kodzie bo parser czyta kod praktycznie znak po znaku.
Kiedy już ma wszystko wczytane to najpierw wykonuje b + c, a następnie b++, znów według zasad.
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 37 gości