Wie cast oder convert unsigned int to int in C?
Meine Entschuldigung, wenn die Frage scheint seltsam. Ich bin Debuggen meines Codes, und dies scheint das problem zu sein, aber ich bin mir nicht sicher.
Dank!
InformationsquelleAutor der Frage Eric Brotto | 2011-02-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es hängt davon ab, was Sie wollen, das Verhalten zu sein. Ein
int
nicht halten viele der Werte, die eineunsigned int
können.Können Sie die Besetzung wie üblich:
aber das wird zu Problemen führen, wenn die
unsigned
Wert ist Vergangenheit der maxint
halten kann. Dies bedeutet, dass die Hälfte der möglichenunsigned
Werte resultiert in fehlerhafte Verhalten, es sei denn, Sie speziell achten.Sollten Sie vielleicht überdenken, wie Sie zum speichern von Werten in den ersten Platz, wenn Sie konvertieren, die für keinen guten Grund.
EDIT: Wie erwähnt von ProdigySim in die Kommentare, der maximale Wert ist Plattform abhängig. Aber Sie können es mit
INT_MAX
undUINT_MAX
.Für die üblichen 4-byte-Typen:
Wenn alle 32 bits verwendet werden, wie in
unsigned
der maximale Wert wird 2^32 - 1, oder4,294,967,295
.Einer signierten
int
effektiv Opfer, ein bit für das Vorzeichen, so ist der maximale Wert 2^31 - 1, oder2,147,483,647
. Beachten Sie, dass dies die Hälfte der anderen Wert.InformationsquelleAutor der Antwort Chris Cooper
Unsigned int konvertiert werden kann unterzeichnet (oder Umgekehrt) durch einfache Ausdruck wie unten dargestellt :
Obwohl nicht gezielt auf die Frage, die man Lesen möchte folgenden links :
InformationsquelleAutor der Antwort Javascript is GOD
Wenn Sie eine variable
unsigned int x;
können Sie konvertieren es in einint
mit(int)x
.InformationsquelleAutor der Antwort Jeremiah Willcock
Es ist so einfach:
Oder Umgekehrt...
InformationsquelleAutor der Antwort DarkDust
Wenn ein unsigned int und ein (signed) int in der selben Ausdruck, die unterzeichnet int wird implizit in unsigned. Dies ist eine ziemlich gefährliche Funktion der C-Sprache, und man Sie daher bewusst sein müssen. Es kann oder kann nicht der Grund für deinen Fehler. Wenn Sie möchten, eine genauere Antwort, müssen Sie dem post-code.
InformationsquelleAutor der Antwort Lundin