Was ist der Unterschied zwischen unsigned short
und unsigned int
? Ich fand, dass unsigned short
ist 0-65,535
und unsigned int
ist 0-65,535
oder 0-4,294,967,295
. Ich verstehe den Unterschied nicht sehr gut. Wie kann ich die Größe des Datentyps in meiner Architektur erkennen? Und wenn zum Beispiel c = (unsigned short) d;
wenn c
ist unsigned short
und d ist unsigned int
; was ist das mittlere? Die ersten 16 Bits von d
werden c
?
Sie fragen wirklich, was der Unterschied zwischen short
und int
ist. Die Antwort ist, dass short
möglicherweise schmaler ist, aber auch dieselbe Breite wie int
. Das ist praktisch alles, was wir wissen, unabhängig von der Plattform. Viele Plattformen haben 32-Bit int
und 16-bit short
, aber nicht alle.
Dies ist ein nützlicher Link, um den Verlauf von C-Datentypen zu erklären:
Die Größe Ihres Datentyps ist also plattformabhängig, aber wenn Ihr int eine Länge von 32 Bits hat, dann kann es eine von 2 ^ 32 verschiedenen Zahlen darstellen (0 - 4.294.967.295, wenn nicht vorzeichenbehaftet). Ähnlich verhält es sich, wenn Ihre Abkürzung 16 Bit lang ist, dann kann sie eine von 2 ^ 16 verschiedenen Zahlen darstellen (0 - 65.535, falls nicht vorzeichenbehaftet).
Dieser Link gibt Ihnen die Implementierungsdetails für Visual Studio 2005, wobei Ints 32-Bit-Größe (4 Byte) und Kurzschlüsse 16 Bit (2 Byte) sind:
Ihre genaue Implementierung hängt von Ihrem Compiler ab.
Was den letzten Teil Ihrer Frage angeht, ja, wenn Sie versuchen, einen int, der größer als der Maximalwert des Short ist, auf einen Short zu reduzieren, erhalten Sie einen anderen Wert (wahrscheinlich die ersten 16 Bits, aber Sie sollten es testen) sicher sein).
Wir können nicht sagen, dass ein variabler Typname (kurz, int, long, double usw.) eine bestimmte Bitlänge über alle Mikroprozessorarchitekturen oder Programmiersprachen zeigen muss. Es hängt hauptsächlich von der Architektur der Mikroprozessoren und natürlich von den Definitionen der Programmiersprachen ab. Im Allgemeinen sollte signed / unsigned short (ich würde erwarten) eine halbe Bitgröße von signed / unsigned int haben.
Nun, zuerst müssen Sie verstehen, was ein unsigned int und short ist.
Alles ist in Bits aufgeteilt.
Ein short ist 16 Bits, wobei jedes Bit eine 1 oder eine 0 ist. Der Einfachheit halber demonstriere ich mit 4 Bits
%Vor%Beachten Sie, dass bei einer vorzeichenlosen Zahl der Zahlenbereich größer ist, können wir machen 1111 = 15.
Aber mit einer vorzeichenbehafteten Nummer ist die maximale Möglichkeit 0111 = 7.
Jetzt hat ein Kurzschluss 16 Bits und gibt es
%Vor%Ein Int hat 32 Bits, was einen Bereich von
ergibt %Vor%