Ankündigung

Einklappen
Keine Ankündigung bisher.

Validierung if() clause

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [Handbuch] Validierung if() clause

    Eine Frage zur Validierung in der if() clause.
    Werden in jedem cycle alle Konditionen in der if() clause überprüft?

    Ist dies:
    Code:
    a=0b01
    b=0b01
    c=0b01
    /* manipulation von a und b */
    if(a and b) then c= EIN else c=AUS endif
    gleichbedeutend mit
    Code:
    a=0b01
    b=0b01
    c=0b01
    /* manipulation von a und b */
    if( change(a) or change(b)) then{
         if(a and b) then c= EIN else c=AUS endif
    } endif

    #2
    Zitat von asc570 Beitrag anzeigen
    Werden in jedem cycle alle Konditionen in der if() clause überprüft?
    Ja und alsbald sich eine Ausgangsbedingung ändert, neu ausgewertet.
    In Deinem Beispiel ist zu beachten: change(a) or change(b) ist sicher nicht das gleiche wie a and b. Erstere if-Abfrage wird bei jeder Änderung von a oder b ausgeführt, letztere nur dann wenn a und b auf EIN stehen und dann auch nur einmal.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      #3
      Zitat von enertegus Beitrag anzeigen
      In Deinem Beispiel ist zu beachten: change(a) or change(b) ist sicher nicht das gleiche wie a and b. Erstere if-Abfrage wird bei jeder Änderung von a oder b ausgeführt, letztere nur dann wenn a und b auf EIN stehen und dann auch nur einmal.
      Danke für den Hinweis!
      Noch eine Frage zu einem Versträndniss:
      Muß der Compiler nicht mein Beispiel 1. intern auf die Form des Beispiel 2. umstellen?
      Ist nicht der Wert von:
      change(var) gleichbedeutend mit "var ist nicht valid"

      Soweit ich das bisher in der Praxis bisher beobachtet hatte, vergleicht change() nicht den Wert der Variable sondern den den "last time written" timestamp. Oder liege ich da falsch?

      Gruß,
      Alexander

      Kommentar


        #4
        Zitat von asc570 Beitrag anzeigen
        Muß der Compiler nicht mein Beispiel 1. intern auf die Form des Beispiel 2. umstellen?
        Der Compiler muss da nix umstellen, das erledigt die FW intrinsisch. Natürlich ist vom Ergebnis die 2. Version das selbe wie die erste - von daher hast Du recht -, aber speziell die If-Anweisung nicht.
        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
        Enertex Produkte kaufen

        Kommentar

        Lädt...
        X