Forum: Compiler & IDEs Fehlermeldung AVR Studio 4


von Achim S. (achims)


Lesenswert?

Hallo Freunde
habe eine Fehlermeldung mit AVR Studio 4, die ich nicht verstehe.
Fehlermeldung:
Warning: left-hand operand of comma expression has no effekt

Die Meldiung kommt bei dem folgenden Schnipzel:
for (i=4,j=5;i>=2,j<=8;i--,j++)   <<< In dieser Zeile
{
leds_set_status(0,i);
leds_set_status(0,j);
delay(150);
}
 Sobald ich nur i oder j verwende, gibt es keine Probleme. Es wird eine 
Warnung angezeigt aber das Prg läuft trotzdem. Habe auch die Vorzeichen 
geändert
achim

von Stefan E. (sternst)


Lesenswert?

Die Warnung bezieht sich auf diesen Teil:
1
i>=2,j<=8
Und die Aussage der Warnung ist schlicht wortwörtlich zu nehmen: die 
linke Seite vom Komma hat keinen Effekt, also keinerlei Einfluss auf die 
Programmausführung. Am besten nimmst du dir dein C-Buch und schlägst mal 
die genaue Bedeutung des Komma-Operators nach. Und danach die Bedeutung 
von &&.

von Achim S. (achims)


Lesenswert?

Hallo
das habe ich getan. Der Aufbau stammt genau aus einem C Buch von Jürgen 
Wolf. Habe es noch mal nachgelesen, es steht auf Seite 165 uf.Es können 
verschiedene Eingaben gemacht werden, die durch ein Komma getrennt sind. 
Habe ich da was falsch gelesen?

von Peter II (Gast)


Lesenswert?

Achim Seeger schrieb:
> Hallo
> das habe ich getan. Der Aufbau stammt genau aus einem C Buch von Jürgen
> Wolf.

kann ich mir nicht vorstellen. so eine for schleife schreibt man in der 
Praxis nicht. Warum sollte man 2 Variablen verwenden wenn auch eine 
Reicht?
1
for (i=0; i<2; ++i )   
2
{
3
leds_set_status(0, 4-i);
4
leds_set_status(0, 5+i);
5
delay(150);
6
}

von Achim S. (achims)


Lesenswert?

Hallo Peter
danke für deine Antwort.Dein Vorschlag ist klasse. Habe ihn so 
umgesetzt. Zu Anfang lief es leider verkehrt herum. Konnte ich ändern, 
ohne Problem, auch die Zuordnung bei mir. Habe den Code mal 
reingestellt.

for (i=2;i<=4;i++)
{
leds_set_status(1,i);
leds_set_status(1,9-i);
delay(150);
}
for (i=4;i>=2;i--)
{
leds_set_status(0,i);
leds_set_status(0,9-i);
delay(150);
}

Das mit C lernen ist gut, bin auch dabei. Doch wenn in dem besagten Buch 
steht

10. Möglichkeit
for(n1=1,n2=2;n1<=10;n1++)

dann nehme ich an das es geht. In einem anderen Tutorial steht auch

for (i=1,j=100;i<=100,j>=1;i++,j--)

Wer hat den nun recht. Meine Fehlermeldung oder die Literatur?
achim

von Stefan E. (sternst)


Lesenswert?

Achim Seeger schrieb:
> Doch wenn in dem besagten Buch
> steht
>
> 10. Möglichkeit
> for(n1=1,n2=2;n1<=10;n1++)
>
> dann nehme ich an das es geht.

Da steht ja aber auch kein Komma im mittleren Teil (dem Bedingungs-Teil) 
der for-Schleife.

Achim Seeger schrieb:
> In einem anderen Tutorial steht auch
>
> for (i=1,j=100;i<=100,j>=1;i++,j--)

Das Tutorial ist in diesem Punkt schlicht falsch.

von Achim S. (achims)


Lesenswert?

Danke für deine Info

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.