it-swarm.com.de

unsigned short vs unsigned int - manchmal liegen sie im selben Bereich?

Was ist der Unterschied zwischen unsigned short und unsigned int? Ich fand, dass unsigned short0-65,535 und unsigned int0-65,535 oder 0-4,294,967,295 ist. Ich verstehe den Unterschied nicht sehr gut. Wie kann ich die Größe des Datentyps in meiner Architektur ermitteln? Und wenn zum Beispiel c = (unsigned short) d; wenn c ein unsigned short ist und d ein unsigned int ist was ist das mittlere? Die ersten 16 Bits von d werden c zugewiesen.

9
mpluse

Sie fragen wirklich, was der Unterschied zwischen short und int ist. Die Antwort ist, dass short schmaler sein kann, aber auch die gleiche Breite haben kann wie int. Das ist praktisch alles, was wir sicher wissen, unabhängig von der Plattform. Viele Plattformen haben 32-Bit int und 16-Bit short, jedoch nicht alle.

6
John Zwinck

Dies ist ein nützlicher Link, um die Geschichte von C-Datentypen zu erklären:

http://en.wikipedia.org/wiki/C_data_types

Die Größe Ihres Datentyps ist also plattformabhängig, aber wenn Ihr int 32 Bit lang ist, kann es eine von 2 ^ 32 verschiedenen Zahlen darstellen (0 - 4.294.967.295, wenn kein Vorzeichen vorliegt). Wenn Ihr Kurzschluss eine Länge von 16 Bits hat, kann er eine von 2 ^ 16 verschiedenen Zahlen darstellen (0 - 65.535, wenn kein Vorzeichen vorliegt).

Diese Verknüpfung enthält die Implementierungsdetails für Visual Studio 2005, wobei ints eine Größe von 32 Bit (4 Bytes) und Kurzschlüsse 16 Bit (2 Bytes) haben:

http://msdn.Microsoft.com/de-de/library/s3f49ktz(v=vs.80).aspx

Ihre genaue Implementierung hängt von Ihrem Compiler ab.

Was den letzten Teil Ihrer Frage angeht: Ja, wenn Sie versuchen, einen Wert zu überschreiten, der größer als der maximale Wert des Short ist, erhalten Sie einen anderen Wert (wahrscheinlich die ersten 16 Bits, aber Sie sollten dies testen). .

1
gavinj500

Wir können nicht sagen, dass ein Variablentypname (short, int, long, double usw.) eine bestimmte Bitlänge in allen Mikroprozessorarchitekturen oder Programmiersprachen angeben muss. Es hängt hauptsächlich von der Architektur der Mikroprozessoren und natürlich von den Definitionen der Programmiersprachen ab. Im Allgemeinen sollte ein signierter/unsignierter Short die halbe Bitgröße des signierten/unsignierten Int haben. 

0
ceremcem