So weiß ich, dass C++ ein Operator Präzedenz hat und dassC/C++ Math Order of Betrieb
int x = ++i + i++;
ist nicht definiert, weil pre ++ und poste ++ auf dem gleichen Niveau sind und somit gibt es keine Möglichkeit wird, die man sagen zuerst berechnet werden. Aber was ich fragte mich, ob
int i = 1/2/3;
ist undefiniert ist. Der Grund, warum ich frage, ist, weil es mehrere Möglichkeiten gibt, das zu betrachten (1/2)/3 ODER 1/(2/3). Meine Vermutung ist, dass es ein undefiniertes Verhalten ist, aber ich möchte es bestätigen.
Nein, es ist nicht undefiniert. Es ist (eins geteilt durch zwei) geteilt durch drei. Es ist mit anderen Worten ein gewöhnlicher mathematischer Ausdruck. –
Ich denke, dein Denken ist hier ein wenig vage über das erste und das blutete in dein Nachdenken über das zweite. Die erste läuft auf die Reihenfolge der Argumentauswertung für eine undefinierte Funktion hinaus. Das heißt, wenn Sie es als 'Operator + (++ i, i ++)' betrachten, springt es direkt auf Sie. –
C++ (und die meisten anderen Programmiersprachen) haben eine definierte Rangordnung, die der Mathematik entlehnt ist. Sie betrachten einen Ausdruck nicht mehrfach; mathematische Operationen haben eine Hierarchie. Sie können jedoch die Reihenfolge einer Operation mit (gut platzierten) Klammern ändern. –