Forum: Mikrocontroller und Digitale Elektronik Warum Var = 0?


von Dirk (Gast)


Lesenswert?

int zaehler = 0;

int main( void )
{
  zaehle();
  for (;;)
  {
   ...
   tueetwas();
   ...
  }

}

void zaehle(void)
{
  zaehler = 34;
}

void tueetwas(void)
{
printf(" %1",zaehler)
}

Hallo Leute das ist vereifacht mein Programm.
Ich habe ein verständnissproblem mit der gültigkeit von Variablen.
nach meinem Verständniss müsste jedesmal wenn tueetwas() aufgerufen 
wird,
die ausgabe 34 kommen. Leider ist sie immer 0.
KLeine Syntaxfehler bitte ich zu verzeihen, da ich das Programm auf das 
wesentliche gekürzt habe und aus meinem Gedächtnis einfach runtergetippt 
habe.
Kann mir jemand helfen. und sagen wie man das Problem in den Griff 
bekommt?
Warscheinlich sind Pointer die lösung (sind die nicht immer die 
lösung???)
leider habe ich trotzdem keine idee wie ich das lösen soll.

Liebe Grüße

Dirk

von Helmut L. (helmi1)


Lesenswert?

Dirk schrieb:
> printf(" %1",zaehler)
            ^

Dann sage dem printf auch das es etwas ausgeben soll. Da muss ein d 
rein.

von NurEinGast (Gast)


Lesenswert?

Was ist denn "printf(" %1",zaehler)"

Ich hätte "printf(" %d",zaehler)" gedacht.

von Dirk (Gast)


Lesenswert?

danke dir.
aber genau das meinte ich mit kleine syntaxfehler.
Da steht ein i bei mir

von NurEinGast (Gast)


Lesenswert?

Dann erzähle mal was Du sonst noch so an kleinen Syntaxfehler drin hast.

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

Dirk schrieb:
> Da steht ein i bei mir

Da muss trotzdem d rein, für dezimal.

edit: ups...i müsste ja auch gen. Beitrag einfach ignorieren ;)

von Dirk (Gast)


Lesenswert?

Mach es mir doch nicht so schwer.

Mein dargestelltes Codesekment habe ich schnell runtergetippt.
Es soll eigentlich nur zeigen das ich vor der Endlosschleife einer 
Variablen einen Wert zuweise, der dann nicht mehr geändeert wird.
In einer anderen Funktion will ich diese variable wieder nutzen. Leider 
hat das nicht funktioniert, deshalb habe ich sie mir zur fehlersuche 
ausgeben lassen.
Und siehe da anstatt 34 ist sie immer 0.

von Peter II (Gast)


Lesenswert?

Dirk schrieb:
> Und siehe da anstatt 34 ist sie immer 0.

aber nicht mit dem Programm, mache es doch mal lauffähig und du wirst 
sehen es geht.

von NurEinGast (Gast)


Lesenswert?

Zeig uns einfach deinen RICHTIGEN Sourcecode.

Vielleicht hast Su ja was wie
1
void zaehle(void)
2
{
3
 int zaehler = 34;
4
}

geschrieben - und siehst das auch nur als "kleinen Syntaxfehler".
Ist es aber nicht.
Also - zeige den wirklichen Source - sonst hilft alles raten nichts.

von Peter S. (petersp)


Lesenswert?

Ich weiß ja nicht, aber wäre es nicht sinnvoll, der Funktion void 
tueetwas(void) auch den Wert der Variablen zaehler zu übergeben? Oder 
liege ich da falsch?

Servus
Peter

von Dominik S. (dasd)


Lesenswert?

Dirk schrieb:
> Warscheinlich sind Pointer die lösung (sind die nicht immer die
> lösung???)

Nein... eigentlich nicht ^^

Dirk schrieb:
> Kann mir jemand helfen. und sagen wie man das Problem in den Griff
> bekommt?

Leider nein.
So wie es oben steht passt alles (mit Ausnahme der schon erwähnten 
"%1").

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Dominik S. schrieb:
> So wie es oben steht passt alles (mit Ausnahme ...)
Dann liegt das Problem auserhalb der geposteten Zeilen.

Bei mir geht das nämlich: http://codepad.org/q0RW80Bw

Mach mal einen compilierbaren Dreizeiler, der bei dir den Fehler 
hervorruft. Dann sagst du noch, welche Toolchain und welche 
Zielplattform du verwendest und wie du feststellst, dass da 0 drin 
steht.

Du könntest natürlich auch einfach mal Schritt für Schritt 
durchdebuggen...

Ach ja, noch was:
Quelltext bitte in die passenden Tokens einbinden (siehe Screenshot).

von dgps (Gast)


Lesenswert?

hast du das abgekürzte, vereinfachte Beispiel auch mal compiliert?
Ich vermute mal, dass irgendwo anders der Fehler liegt...

von NurEinGast (Gast)


Lesenswert?

Nu isser weg - der Kollege Dirk (Gast)

Macht so richtig Spass den Usern zu helfen, wenn sie dann einfach 
abtauchen .......

von Dirk (Gast)


Lesenswert?

Sag mal habe ich dir irgendwas getan.
Mein Tag besteht auch aus was anderem, ausser vor dem rechner sitzen.

Ich will nicht undankbar erscheinen, aber nur weil ich mal ne Stunde 
nichts schreibe...

von NurEinGast (Gast)


Lesenswert?

Ja klar ......

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.