Forum: Mikrocontroller und Digitale Elektronik Implicit signed to unsigned conversion


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Toxic (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich steh momentan auf dem Schlauch:

Meine Variablen:
const unsigned char NCOinc[136] = {Hz15_,Hz15,Bla1,Bla2,etc};
      unsigned char count = 46;

Das Programm funktioniert,bekomme aber diese Fehlermeldung(Warnung um 
genau zu sein) vom Compiler  :

main.c:85:28: warning: (373) implicit signed to unsigned conversion

    NCO1INCH = NCOinc[count];   => OK
    NCO1INCL = NCOinc[count+1]; => warning message - Warum?

Ersetze ich "count+1" durch count++ meckert der Compiler nicht

    NCO1INCH = NCOinc[count];   => OK
    NCO1INCL = NCOinc[count++]; => OK

Ignoriert die 2 anderen Encoder-Warnungen im Anhang - das gleiche 
Problem...
Wo ist mein Denkfehler? Und wie schon gesagt:Das Programm laeuft ohne 
Probleme....

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Die "1" ist vom Typ int, welcher standardmäßig als signed angesehen 
wird. Die Addition eines unsigned char mit einem int ergibt einen 
(signed) int.

Daher solltest Du mal die folgende Zeile ausprobieren:
1
NCO1INCL = NCOinc[count+1U];

Oder:
1
NCO1INCL = NCOinc[count+(unsigned char)1];

von Anja (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Toxic schrieb:
> NCO1INCL = NCOinc[count+1]; => warning message - Warum?

1 ist signed.
1u wäre unsigned

Gruß Anja

von Toxic (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Andreas S. schrieb:
> Daher solltest Du mal die folgende Zeile ausprobieren:NCO1INCL =
> NCOinc[count+1U];

Anja schrieb:
> 1 ist signed.
> 1u wäre unsigned

Oh mann.....
Ja ihr habt recht "1u" - loest das Problem.

Zum Glueck ist (noch) kein Shitstorm wegen meiner Unwissenheit ueber 
mich hereingebrochen.....

Danke fuer die schnelle Rueckmeldung.
Meine Antwort liess etwas laenger auf sich warten,weil ich als Gast 
erstmal eine Stunde Daeumchen drehen muss,bevor ich wieder aktiv werden 
darf....

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]
  • [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.

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