2017-03-10 4 views
-4

Im folgenden C# BeispielZweck des Hinzufügens unnötiger Klammern in einem logischen Ausdruck mit && und ||

bool isTrue = (isP1 && isQ1) || 
    (isP2 && isQ2) || 
    (isP3 && isQ3); 

die Klammern sind nicht erforderlich, da && eine höhere Priorität als || hat.

Aber ich habe gehört, dass

die Klammern für Klarheit hinzugefügt werden und weil die Logik sonst tun links nach rechts PEMDAS fehlschlagen

Handhabung Was bedeutet „, weil die Logik könnte sonst scheitern, wenn man von links nach rechts PEMDAS-Handling macht "meine ich hier?

Wenn die PEMDAS-Verarbeitung von links nach rechts ausgeführt wird, hat && keine höhere Priorität als ||?

Danke.

+0

Es bedeutet, dass jemand die Vorrangregeln des Operators (über PEMDAS hinaus) nicht verinnerlicht hat - oder denkt, dass andere Leser des Codes das vielleicht nicht tun. Fair genug (vor allem, weil sie zwischen Programmiersprachen unterscheiden). –

+4

Wenn Sie darüber nachdenken müssen, ob Sie die Klammern brauchen oder nicht, dann ist es besser, sie zu verwenden. –

+0

Manchmal ist es nicht nur nützlich, Klammern zu verwenden, sondern auch erklärende Variablen einzuführen, die lesbare Namen für Bedingungen liefern. Z.B. anstelle von 'isP2 && isQ2' können Sie' isRentExpired' verwenden. –

Antwort

0

Ja, der Operator && hat eine höhere Priorität als ||, aber wenn Klammern verwendet werden, hilft es Dritten, den vom Programmierer beabsichtigten Zweck zu identifizieren, und es erklärt auch deutlich die Art der Auswertung, die durchgeführt wird. Zum Schluss wird es verwendet, um ein besseres Verständnis des geschriebenen Programms zu ermöglichen.

Verwandte Themen