www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Warning beim Compilieren von C-Code


Autor: Ratlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe hier folgenden Code (nicht selbst erstellt):
char * Ergebnis;
char Puffer[6];
T_SInt16 I,J,K;

...

  for(J=Laenge,K=5;J>=0,K>I;J--,K--)
    *(Ergebnis+J) = Puffer[K];

Mein C-Compiler meldet folgende Warning für die Zeile mit "for(....)" 
beim Compilieren:
warning: expression has no effect

Was habe ich übersehen? Kann es mir leider nicht erklären. Danke 
schonmal.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du verwirfst das Ergebnis von K>I.

Lies nochmal im C Buch den Kommaoperator durch.



Peter

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Komma im Bedingungs-Part macht keinen Sinn. Da muss ein && oder || 
hin.

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Abbruchbedingung der for-Schleife ist: "J>=0,K>I".
Statt dem Komma gehört da eher ein "&&" rein, also
for(J=Laenge,K=5; J>=0 && K>I; J--,K--)

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine for-Schleife sollte so aussehen:
for(Initialisierung; Bedingung; Reinitialisierung) {
   /* Anweisungen */
}

Die Kommas, die Du da setzt, machen überhaupt keinen Sinn.

Autor: Ratlos (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super danke,

echt komisch. Slebst würd ich nie auf die Idee kommen bei der Bedingung 
ein Komma zu verwenden. Aber beim durchforsten von fremden Code ist es 
mir einfach nicht aufgefallen.

Schönen Tag noch!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Patrick wrote:
> Eine for-Schleife sollte so aussehen:
>
for(Initialisierung; Bedingung; Reinitialisierung) {
>    /* Anweisungen */
> }
> 
>
> Die Kommas, die Du da setzt, machen überhaupt keinen Sinn.

Doch. Die anderen beiden Kommas sind sehr wohl sinnvoll und
machen auch das was erwartet wird. Lediglich im Bedingungsteil
ist das Komma sinnlos.

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ Peter Dannegger:

> Du verwirfst das Ergebnis von K>I.

Nein, er verwirft das Ergebnis von J>=0. ;-)

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Ernst wrote:
> Nein, er verwirft das Ergebnis von J>=0. ;-)

Stimmt natürlich.
Andersrum wäre blöd, dann könnte man ja keine Macros mit Returnwert 
schreiben.


Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.