Forum: PC-Programmierung Wie Operator-Priorität prüfen?


von cppbert (Gast)


Lesenswert?

möglicherweise eine ziemlich blöde Frage

ich habe einen kleinen Bool Expression Interpreter geschrieben und 
versuche dafür jetzt einen Operator Prioritäts-Unit-Test zu machen
der absichert das sich mein Interpreter an den C++ Standard hält: 
https://en.cppreference.com/w/cpp/language/operator_precedence

für || und && ist das ja relativ einfach: 
https://en.cppreference.com/w/cpp/language/operator_precedence

aber für eine Prio Prüfung von == und ||(oder &&) fällt mir nichts ein
ich bekomme kein Beispiel hin bei dem die Prio zu einem anderen Ergebnis 
führt wenn die Prio falsch ist

Jemand eine Idee, ich kann && || == und Klammern

// Beispiel-Code um die Prio für C++ zu testen

int main()
{
    // && und || Prio pruefen
    constexpr bool and_prio_ueber_or = true || false && false;
    constexpr bool prio_ungleich = and_prio_ueber_or != (false && true 
or true);
    static_assert(and_prio_ueber_or, "Fehler: && hat niedrigere prio als 
|| ?");
    static_assert(!prio_ungleich, "Fehler: prio gleich ?");

    //aber wie kann ich prüfen ob == eine hoehere Prio hat als &&?

    return 0;
}

von Hannes (Gast)


Lesenswert?

if (0 == 1 && 0)

=> 1 wenn && enger bindet als ==
=> 0 wenn == enger bindet als &&

von Oliver S. (oliverso)


Lesenswert?

cppbert schrieb:
> //aber wie kann ich prüfen ob == eine hoehere Prio hat als &&?

false && true == false

Oliver

von cppbert (Gast)


Lesenswert?

Oliver S. schrieb:
> cppbert schrieb:
>> //aber wie kann ich prüfen ob == eine hoehere Prio hat als &&?
>
> false && true == false
>
> Oliver

Danke

von cppbert (Gast)


Lesenswert?

Hannes schrieb:
> if (0 == 1 && 0)
>
> => 1 wenn && enger bindet als ==
> => 0 wenn == enger bindet als &&

Auch viel Dank euch beiden für das lösen meiner Gehirnbremse :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.