Forum: Compiler & IDEs 'y' may be used uninitialized in this function


von Johannes L. (johannes_l37)


Lesenswert?

Guten Tag,
ich bekomme bei meinem Programm immer wieder folgende Fehlermeldung:
,,'i' may be used uninitialized in this function'' ich kann mir diese 
Fehlermeldung allerdings nicht erklären, denn:
1
void Check_out_Positionen()
2
{
3
for(int y=1; y<9; y++) //Fehlermeldung
4
  {
5
  for(int x=0; x<9; x++)//keine Fehlermeldung
6
    {
7
                //Gewöhnliche If-Abfragen im bezug auf x und y
8
                //[...]
9
                }
10
         }
11
}

Ich kann mit nicht vorstellen, wieso die erste 'for'-Schleife einen 
Fehler raushauen sollte. Und die zweite nicht.

Bisher habe ich noch keine AUswirkungen gesehen (das Programm arbeitet 
gut) aber ich will diese Fehlermeldungen weg kriegen, aleine aus 
prinzip.

Ich benutze Eclipse SDK.

Edit: Seltsamerweise ist der Fehler an der Stelle verschwunden, jetz 
bekomme ich den Fehler nur noch an ähnlichen Stellen: confused
1
void Bewegung()
2
{
3
  for(int i; i<9; i++)
4
    {
5
    //Gewöhnliche IF Abfrage
6
    }
7
}

von Patrick (Gast)


Lesenswert?

Im zweiten Beispiel ist i uninitialisiert.

Welcher Compiler, welche Programmiersprache, welcher Dialekt usw.?

Minimalprogramm erstellen, bei dem der Fehler auftritt, und mit den 
exakten Fehlermeldungen posten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Bitte gib uns ein compilierbares Beispiel statt irgendwelcher
Codeschnipsel, die nicht zu deiner Aussage passen (im Text steht 'i',
das im Code nicht vorkommt, in der Überschrift steht 'y').

Übrigens:
1
void Bewegung()

ist in der Sprache C eine veraltete Funktionsdeklaration, da sie
keinen Prototypen darstellt.  Gewöhn' dir bitte an, stattdessen
1
void Bewegung(void)

zu schreiben.  In C++ sind zwar beide Formen identisch, aber in C
eben nicht.  In C++ wäre die ausgeschriebene Form trotzdem
zulässig, man muss es sich also auch dort nicht extra wieder
abgewöhnen. ;-)

von Johannes L. (johannes_l37)


Angehängte Dateien:

Lesenswert?

Jörg Wunsch schrieb:
> Bitte gib uns ein compilierbares Beispiel statt irgendwelcher
> Codeschnipsel, die nicht zu deiner Aussage passen (im Text steht 'i',
> das im Code nicht vorkommt, in der Überschrift steht 'y').

1
 void Bewegung(void)
Okay!
Das volle Programm ist recht groß, und noch lange nicht vollständig,


>Im zweiten Beispiel ist i uninitialisiert.
Wieso das, dort steht doch:
1
for(/**/int i/**/; i=0; i++)
2
    {//example
3
    }

>Welcher Compiler, welche Programmiersprache, welcher Dialekt usw.?
Ich arbeite mit Eclipse SDK, programmiere in C, GCC ToolChain

Ansonsten Programm im Anhang, ich weise daraufhin das es noch nicht 
funktioniert, ich arbeite zur Zeit mit dem ATmega168 und lasse die 
Positionen nach der bearbeitung ausgeben.

Später soll das ganze ein Schachprogramm ergeben + ich hab folgendes:
1
 void Bewegung(void)
noch nicht eingearbeitet.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Johannes L. schrieb:
>>Im zweiten Beispiel ist i uninitialisiert.
> Wieso das, dort steht doch:
1
for(/**/int i/**/; i=0; i++)
2
     {//example
3
     }

Du solltest Dir nochmal GENAU ansehen, wie eine for-Schleife in C 
aussieht.

Und was eine initialisierte Variable ist.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Johannes L. schrieb:
>>Im zweiten Beispiel ist i uninitialisiert.
> Wieso das, dort steht doch:

            A         B  C
>
1
for(/**/int i/**/; i=0; i++)
2
>     {//example
3
>     }

Zwei Fehler:

1. Keine Zuweisung unmittelbar nach dem Schlüsselwort "for" (Abschnitt 
A)
2. Zuweisung statt Vergleich im 2. zweiten Statement (Abschnitt B)

von Johannes L. (johannes_l37)


Lesenswert?

Urgh, verschrieben.
1
for(int i=1; i<9; i++)
>Und was eine initialisierte Variable ist.
und das war was ich gesucht hatte.
Ich hab wohl vergessen den Variablen einen Wert zu zuweisen, bevor ich 
sie verwende. Danke, kriege ich auch endlich die Warnung weg!

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.