Variablenwert an Ausdruck hängen?!
-
Hallo,
ich bin wirklich wirklich wirklich neu in Sachen C... habe, um genau zu sein, heute den ersten Code geschrieben...
Folgendes Problem: Ich würde gerne in einer Zählschleife eine Variable hoch zählen und in der Schleife den Wert an einen Ausdruck hängen....
also z.B.
for (I = 1; I == 10; I++){ Ausgang+I = Wert; }
kann ich dieses '+I' irgendwie in C realisieren?
ich frage hier danach, da ich nicht weiß, wonach ich in der Fachlitteratur oder im Internet suchen soll...
Bitte helft mir...
-
Meinst du sowas?
int ergebnis = 0; for( int i = 0; i < 10; ++i ) { ergebnis += i; }
Was für eine Bedingung für die Schleife wolltest du denn?
Denn ich glaube nicht dass du mit i == 10 das bezweckst was du willst;-)Lg freeG
-
Ich rate auch mal: Meinst du so etwas?
int Ausgang[10]; // Macht 10 ints namens Ausgang[0] bis Ausgang[9] int I; for (I = 0; I != 10; I++){ Ausgang[I] = Wert; } // Und jetzt haben Ausgang[0] bis Ausgang[9] alle den Wert Wert
Stichwort hierfür wäre: Array
-
ach so... ja, das '==' war ein Tippfehler... es sollte '>=' heißen...
aber dennoch ist es nicht die Lösung....
Also folgendes: Das Programm soll für nen Mikrocontroller sein...
und es folgt ein die Schleife, die ich meinte...NR=0; for (I = 0; I >= 79; I++){ if (Wert[I].ROT == 1) PORTB |= (1<<PB+NR); else PORTB &= ~(1<<PB+NR); NR++; if (Wert[I].GRUEN ==1) PORTB |= (1<<PB+NR); else PORTB &= ~(1<<PB+NR); }
...
es soll also geprüft werden, ob Wert[i].Rot = 1 ist... wenn dem so ist, dann soll am 1. Pin des B-Portes (Also praktisch (1<<PB0) eine 1 angelegt werden und wenn dem nicht so ist, eine logische 0. Das gleiche bei Wert[i].Grün... nur da soll es der 2. Pin des B-Portes sein... also (1<<PB1) usw...also ich habe mich ein bisschen falsch ausgedrückt...
-
Es soll also aus PB+NR PB0, PB1, PB2 usw. entstehen... geht dies?
-
gruenemoehre schrieb:
ach so... ja, das '==' war ein Tippfehler... es sollte '>=' heißen...
aber dennoch ist es nicht die Lösung....
Also folgendes: Das Programm soll für nen Mikrocontroller sein...
und es folgt ein die Schleife, die ich meinte...NR=0; for (I = 0; I >= 79; I++){ if (Wert[I].ROT == 1) PORTB |= (1<<PB+NR); else PORTB &= ~(1<<PB+NR); NR++; if (Wert[I].GRUEN ==1) PORTB |= (1<<PB+NR); else PORTB &= ~(1<<PB+NR); }
...
es soll also geprüft werden, ob Wert[i].Rot = 1 ist... wenn dem so ist, dann soll am 1. Pin des B-Portes (Also praktisch (1<<PB0) eine 1 angelegt werden und wenn dem nicht so ist, eine logische 0. Das gleiche bei Wert[i].Grün... nur da soll es der 2. Pin des B-Portes sein... also (1<<PB1) usw...also ich habe mich ein bisschen falsch ausgedrückt...
Dein Codeschnipsel hat irgendwie wenig damit zu tun, was Du so erzählst. Außerdem stimmt Deine Schleife schon mal überhaupt nicht, denn sie tut nichts.
for (I = 0; I < 79; I++)
Ist wohl eher das was Du meinst.
Wenn Du das erste Bit einer Variable setzen willst, nimm
var |= 1;
Zum Löschen
var &= ~1;
Für das zweite Bit:
var |= 2;
Zum Löschen
var &= ~2;
Für das dritte Bit:
var |= 4;
Zum Löschen
var &= ~4;
u.s.w.
mfg Martin