Forum: Mikrocontroller und Digitale Elektronik Implicit signed to unsigned conversion


von Toxic (Gast)


Angehängte Dateien:

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


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)


Lesenswert?

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

1 ist signed.
1u wäre unsigned

Gruß Anja

von Toxic (Gast)


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....

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.