Ist die Zuweisung oder die bedingte Bindung stärker?

8

Ich bin gerade auf das folgende Paar C ++ - Grammatikregeln gestoßen:

%Vor%

Beachten Sie, dass die Regeln gegenseitig rekursiv sind: Bedingter Ausdruck bezieht sich auf Zuweisungsausdruck (Regel 2), und Zuweisungsausdruck verweist darauf zu Bedingungsausdruck (Regel 1).

Was bedeutet dies in Bezug auf die Vorrangstellung des Betreibers? Normalerweise findet das Nicht-Terminal für den stärker bindenden Operator auf der rechten Seite der Regeln für den schwächeren Bindeoperator statt, aber nicht umgekehrt, oder? Hier ist was mich verwirrt, speziell:

Auf der einen Seite bedeutet a = b ? c : d a = (b ? c : d) , was darauf hindeutet, dass ?: stärker bindet.

Auf der anderen Seite bedeutet a ? b : c = d a ? b : (c = d) , was darauf hindeutet, dass = stärker bindet.

Trifft das Konzept der Operatorenpräzedenz im herkömmlichen Sinn einfach nicht zu? Warum?

    
fredoverflow 27.03.2015, 22:03
quelle

1 Antwort

6

?: und = haben die gleiche Operatorpriorität und binden von rechts nach links.

Siehe cppreference .

    
orlp 27.03.2015, 22:09
quelle