&& und || checks optimieren



  • Gibt es eine webseite oder so bei der man Verknüpfungen
    von booleans eingeben kann und die berechnet einem eine
    optimierte Version davon ?

    Ich hab:

    if (!(Child[2] || Child[1]) && m->NeighbourB->SubDivide || (Child[1] && !Child[2])  || (!Child[1] && Child[2]))
    

    wobei alles bool variablen sind und würde gerne wissen ob
    es noch eine vereinfachte/zusammengefasste version gibt
    die aber 100% genau das gleiche liefert 🙂

    Ich weiß das der aktuelle VC++ compiler schon viel optimiert
    aber keine Ahnung ob der das noch superduper analysiert
    und umbaut. Er wird es bestimmt schon irgendwie optimieren
    aber wie weit weiß ich nicht und das disassembly würde ich
    jetzt dafür nicht unbedingt analysieren wollen 😃

    Also villeicht gibt es ja so eine page ?



  • da denke ich gleich an http://de.wikipedia.org/wiki/Karnaugh-Veitch-Diagramm und würde nach applets suchen, die sowas können.

    der c++-compiler soll sowas nicht können dürfen. der programmierer macht hier schon gutes werk und anscheinende fehler sind immer absicht.



  • (Child[1] && !Child[2])  || (!Child[1] && Child[2])
    

    Das ist eine Antivalenz, du kannst sie mit dem entsprechenden ^-Operator abbilden,
    sprich:

    Child[1] ^ Child[2]
    

    Das KV-Diagramm darfste aber selbst Zeichnen 😉

    gruss
    v R


  • Mod

    virtuell Realisticer schrieb:

    (Child[1] && !Child[2])  || (!Child[1] && Child[2])
    

    Das ist eine Antivalenz, du kannst sie mit dem entsprechenden ^-Operator abbilden,
    sprich:

    Child[1] ^ Child[2]
    

    Das KV-Diagramm darfste aber selbst Zeichnen 😉

    gruss
    v R

    oder einfach != benutzen...



  • camper schrieb:

    virtuell Realisticer schrieb:

    (Child[1] && !Child[2])  || (!Child[1] && Child[2])
    

    Das ist eine Antivalenz, du kannst sie mit dem entsprechenden ^-Operator abbilden,
    sprich:

    Child[1] ^ Child[2]
    

    Das KV-Diagramm darfste aber selbst Zeichnen 😉

    gruss
    v R

    oder einfach != benutzen...

    Falls der nicht überladen ist!

    Beispiel:

    Child[1] == 5
    Child[2] == 6
    (Child[1] != Child[2]) == true
    

  • Mod

    Michael E. schrieb:

    Falls der nicht überladen ist!

    Beispiel:

    Child[1] == 5
    Child[2] == 6
    (Child[1] != Child[2]) == true
    

    hier ging es nur um bools - sobald andere datentypen oder überladungen im spiel sind, ist das ohnehin nicht allgemein machbar. ^ würde hier auch nicht funktionieren. != halte ich hier für eine bessere wahl als ^, weil != selbst ein boolscher operator ist. man könnte nat. argumentieren, dass ein operator ^^ nur deshalb nicht existiert, weil er de facto überflüssig wäre; kurzschlussauswertung ist ja für diese operation nicht möglich.



  • ah jo danke stimmt lol kann ich ja einfach
    nen Child[1] != Child[2] draus machen *gg*


Anmelden zum Antworten