Verschachtelungen if else if

Begonnen von pic18, 10.11.2022, 12:09:42 CET

⏪ vorheriges - nächstes ⏩

pic18

Hallo ich habe folgenden Code geschrieben.
Code: c
                    ds18b20CMD = ds18b20ToutInit_LCD;//nur wenn eine der folgende Bedingungen erfüllt sind.
                    if(aktAnz[0]==ausg_ds18b20)
                        ds18b20_LCD=0;
                    else if(aktAnz[1]==ausg_ds18b20) 
                        ds18b20_LCD=1;
                    else 
                        ds18b20CMD = ds18b20Tread;// beide Bedingungen nicht erfüllt
Meine Frage: Da ich Rechenzeit sparen will möchte ich die Zeile:
Code: c
ds18b20CMD = ds18b20ToutInit_LCD
nur ausführen wenn eine der nachfolgenden Bedingungen erfüllt ist. Ich möchte aber nicht bei jeder IF- Abfrage diese Zeile einfügen. Habt ihr eine Idee wie das geht? Evtl. mit setzen von Klammern {}

vloki

Bin mir nicht ganz sicher, dass ich die Frage richtig verstehe ;-)

Die Zeile bei jeder Abfrage einzufügen, wirst du nicht drumrum kommen.
Aber die Rechenzeit verlängert sich dadurch ja nicht, weil es nur einmal ausgeführt wird.

Klammern brauchst du dann natürlich, aber irgendwie glaube ich nicht so ganz,
dass das deine Frage war.

Würde so aussehen:
    if(aktAnz[0]==ausg_ds18b20){
        ds18b20_LCD=0;
        ds18b20CMD = ds18b20ToutInit_LCD;
    }
    else if(aktAnz[1]==ausg_ds18b20){ 
        ds18b20_LCD=1;
	ds18b20CMD = ds18b20ToutInit_LCD;
    }
    else 
        ds18b20CMD = ds18b20Tread;// beide Bedingungen nicht erfüllt

Ginge auch noch mit einem logischen ODER in der ersten Abfrage, aber dadurch wird es nicht besser
    if((aktAnz[0]==ausg_ds18b20)||(aktAnz[1]==ausg_ds18b20)){
        if(aktAnz[0]==ausg_ds18b20) ds18b20_LCD=0;
          else ds18b20_LCD=1; 
        ds18b20CMD = ds18b20ToutInit_LCD;
    }
    else 
        ds18b20CMD = ds18b20Tread;// beide Bedingungen nicht erfüllt
MPLABX  XC8  KiCAD

pic18

Die zwei Möglichkeiten hatte ich auch schon überlegt, macht aber an Rechenzeit und Speicherbedarf kein Unterschied. Ich werde den ursprünglichen Code wahrscheinlich lassen. Ich hatte mir auch schon eine Schleife überlegt, die muß aber nur von 0 bis 1 zählen, was auch uninteressant ist.

Schnellantwort

Name:
Verifizierung:
Bitte lassen Sie dieses Feld leer:
Geben Sie die Buchstaben aus dem Bild ein
Buchstaben anhören / Neues Bild laden

Geben Sie die Buchstaben aus dem Bild ein:

Tastenkürzel: Alt+S Beitrag schreiben oder Alt+P für Vorschau