Moin Moin,
Leider ist es ja in C nicht möglich eine Switch-Case Anweisung mit
Vergleichsoperatoren zu verwenden. D.h. man muss in diesem Falle viele
if's hintereinander abarbeiten.
Nun hab ich mir gedacht, dass es ja eigentlich blöd ist, wenn gleich die
erste if-Anweisung "true" ist, dass dann die darauf folgenden
unnötigerweise immer mit abgearbeitet werden.
Jetzt hab ich das ganze einfach mal in eine Schleife gepackt und mit
break;-Anweisungen ausgeschmückt.
Meine Frage: wie sinnvoll ist das? Schluckt die Schleife drumherum evntl
sogar mehr "Ressource" als die eingespartet if-Anweisungen??
anbei mal der Code. (Zahlendarstellung auf einem GLCD)
1 | // "." = Plathalter für Minus-Zeichen (8px) ; "/" = Platzhalter für Ziffer (14px)
|
2 | // damit Darstellung Rechtsbündig vor dem Komma ist.
|
3 |
|
4 | while(1) //Switch-Case der Marke Eigenbau, für Vergleichsoperatoren
|
5 | {
|
6 | if (position>=10000) //100er Stelle
|
7 | {
|
8 | lcd_puts_p(numbersbig,PSTR("."));
|
9 | break;
|
10 | }
|
11 | if (position<10000 && position>=1000) //10er Stelle
|
12 | {
|
13 | lcd_puts_p(numbersbig,PSTR("./"));
|
14 | break;
|
15 | }
|
16 | if (position>=0 && position<1000) //1er Stelle
|
17 | {
|
18 | lcd_puts_p(numbersbig,PSTR(".//"));
|
19 | break;
|
20 | }
|
21 | if (temp<=(-10000)) //-100er Stelle Sonderfall, maximale Anzahl an Stellen
|
22 | {
|
23 | break;
|
24 | }
|
25 | if (position<=(-1000) && position>(-10000)) //-10er Stelle
|
26 | {
|
27 | lcd_puts_p(numbersbig,PSTR("/"));
|
28 | break;
|
29 | }
|
30 | if (position<=(-100) && position>(-1000)) //-1er Stelle
|
31 | {
|
32 | lcd_puts_p(numbersbig,PSTR("//"));
|
33 | break;
|
34 | }
|
35 | if (position<0 && position>(-100)) //-1er Stelle Sonderfall -0.xx
|
36 | {
|
37 | lcd_puts_p(numbersbig,PSTR("//-"));
|
38 | break;
|
39 | }
|
40 | break;//<----------Finger weg "Not-AUS"!!!
|
41 | }
|