2016-04-28 8 views
-1

Ich habe eine if-Bedingung if(abc==xyz AND (xyz==jkl OR abc==jkl)).Was sind die möglichen programmatischen Möglichkeiten zur Vereinfachung der If-Bedingungen (Umschreibbedingung)

Wie kann ich diesen Ausdruck mit Code neu schreiben, die mir nicht-Klammer Zustand geben wird, also so etwas wie

if(xyz==jkl OR abc==jkl AND abc==xyz)` 

Für grundlegenden Ausdruck können wir Präfix Schreibweisen verwenden, wo mit Hilfe von Stapeln auf dem Vorrang des Operators basierte wir können es lösen. Aber ich möchte nur die Bedingung umschreiben, um zu finden, welche die gleiche Ausgabe wie die mit Klammern geben würde.

+1

Was Sie hoffen, zu sehen? –

+0

Die Klammern können tatsächlich helfen, den Code später zu lesen. – MaD

+0

'OR (abc == jkl)' Diese Klammern sind etwas bedeutungslos. Ein Beispiel, bei dem ihr absense das Ergebnis ändert (und php-Code, da es als php markiert ist) würde deine Frage klarer machen - am wichtigsten ist es nicht klar, was du machst oder warum. – AD7six

Antwort

2

Sie durch die Umwandlung der Bedingung zu DNF beginnen, mit der Tatsache, dass und haben höhere precedence als OR:

if (abc==xyz AND xyz==jkl OR abc==xyz AND abc==jkl) 

am zweiten Teil sucht,

if (abc==xyz AND xyz==jkl OR abc==xyz AND xyz==jkl) 

zu

neu geschrieben werden kann, jetzt können Sie sehen, dass beide Teile gleich sind, wirklich, also können wir

if (abc==xyz AND xyz==jkl) 
vereinfachen

Fun Tatsache: wenn der Ausdruck nicht vereinfacht werden könnte, könnten Sie auch || und AND kombinieren, die Vorrangregeln nutzen:

if (abc==xyz AND xyz==jkl || abc==jkl) 

Nicht, dass ich es empfehlen würde.

+0

'Sie könnten auch kombinieren ||' Warum verwenden Sie den anderen OR-Operator, '||' und OR sind Aliase von einander .. nein? – AD7six

+2

Sie tun die gleiche logische Operation, haben aber eine andere Priorität. Schauen Sie sich die [Präzedenz-Tabelle] an (http://php.net/manual/en/language.operators.precedence.php) – Mifeet

+0

Was ist mit Paren? Ich schreibe es neu, um Klammern zu entfernen, während ich die Ausdrücke innerhalb der Bedingung neu anordne, dass dieser Teil auch beachtet werden sollte. Oder fehle ich etwas? –

0

Wenn für speziell diese Bedingung zu fragen, die sagen, dass der Fall, wenn abc, xyz, jkl So zueinander

if (abc == jkl und ABC == xyz) gleich sind.

Und wenn Sie für Experiment suchen, als Sie den Bediener Präzedenztabelle durch Entfernen der Pars zu gewinnen http://php.net/manual/en/language.operators.precedence.php

Verwandte Themen