-5
Ich dachte, ich verstehe, wie Postfix und Prefix funktioniert, bis ich dieseVerhalten von Postfix und Prefix
begegnen#include <iostream>
using namespace std;
int main(int argc, char const *argv[]) {
int a = 3, b = 3, c = 3;
cout << a + a++ << endl; // = 7 Okay, makes sense to me
cout << b + c++ << endl; // = 6 Now I'm confused
int x = 3, y = 3;
cout << (x++)*(x++)*(x++) << endl; // = 3*4*5 = 60 Okay I get it
cout << (++y)*(++y)*(++y) << endl; // = 5*5*6 = 150 Wait what ? But why... ?
// I thought it would be 4*5*6 or 6*6*6 or something
return 0;
}
Gibt es eine logische explaination dafür? Oder ist es ein unbestimmtes Verhalten?
Der Grund für die UB ist, dass es zwischen den Auswertungen keinen Sequenzpunkt gibt. Andernfalls wäre es ein unspezifisches Verhalten. – juanchopanza
Ich bekomme es jetzt danke. Zu wissen, dass es in "int operator + (int a1, int a2)" übersetzt wird, hilft mir wirklich, meine Frage zu beantworten. –