Ich habe zwei uint16 z.B. x = 20 y= 30 d = x - y somit ist d -10 und genau das gibt er an den UART aus wenn ich itoa nutze. Wie kommt das? Ich erinnere mich daran irgendwo mal was gelesen zu haben bezüglich cast
Das kommt drauf an:
1 | if (sizeof(uint16) < sizeof(int)) |
2 | signed; |
3 | else
|
4 | unsigned; |
Grund: Operanden kleiner int werden auf int erweitert und erst dann gerechnet.
Simon schrieb: > Ich erinnere mich daran irgendwo mal was gelesen zu haben bezüglich cast hier? Beitrag "unsigned - unsigned = signed?!"
PS: Dass itoa auch bei "unsigned" einen Wert mit Vorzeichen ausgibt liegt an der Funktion. Die ist schlicht so definiert.
ich möchte das nicht < 0 haben. gibts Möglichkeiten das zu begrenzen.. ohne einem Vergleich
naja, ich berechne da ja noch mehr und ich möchte nicht mit einer negativen zahl weiter rechnen. mir würde für alles was < 0 ist, 0 gefallen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.