Hallo ich habe folgenden Code geschrieben.
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:
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 {}
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
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.