ich ziemlich sicher bin, dass man uint8_t
von einem anderen subtrahiert wird in einer anderen Zahl ohne Vorzeichen führen sollte, aber einige meiner Ergebnisse mir verwirren.Gibt es einen Unterschied zwischen unären - und n -
uint8_t a = 2;
uint8_t b = 1;
uint8_t c = -a;
long d = b - a;
long e = b + c;
Wenn ich den Wert von d
erreichen, ist es -1
, während e
produziert, ist, wie ich 255
erwarten würde. Dies ist ein Fehler mit der Version gcc
Ich benutze ..... richtig?
Als Referenz verwende ich den arm-none-eabi-g++
Compiler für meine MSP-432
.
Blick auf this scheint darauf hinzuweisen, dass gcc
scheint nur den gleichen Fehler hier zu machen.
bei this Blick Frage SO es, dass Godbolt scheint und der Arm gcc ist falsch.
Was geht hier vor?
verwendet Konvertierungsspezifizierer von 1. hinzugefügt, bitte? –
In C können Sie nicht mit Typen arbeiten, die kleiner als "int" sind. Suchen Sie nach impliziten Conversions. – Olaf
Integer-Werbeaktionen als Teil von arithmetischen Konvertierungen. Das Ergebnis ist, dass Sie die Größen-Aliase nicht für den Zweck der modularen Arithmetik verwenden können! Die Aliase des Typs codieren den Umsetzungsrang nicht. –