unsigned short vs unsigned int - manchmal sind Sie die gleiche Reichweite?
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 nicht den Unterschied sehr gut. Wie kann ich wissen, die Größe des Datentyps in meine Architektur? Und wenn zum Beispiel c = (unsigned short) d;
wenn c
ist ein unsigned short
und d ist ein unsigned int
; was ist damit gemeint? die ersten 16 bits aus d
zugeordnet sind c
?
- Warum gibt es die drei genannten Sprachen?
- Klingt wie C, entfernen überflüssige language-tags.
- Es ist nicht allgemein für den 3 Sprachen?
- Nein, nicht wirklich. Java ist eine andere Sache.
- Ah okay! So? 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du bist wirklich Fragen, was ist der Unterschied zwischen
short
undint
. Die Antwort ist, dassshort
können schmaler sein, kann aber auch die gleiche Breite wieint
. Das ist praktisch alles, was wir sicher wissen, unabhängig von der Plattform. Eine Menge von Plattformen mit 32-bit -int
-und 16-bit -short
, aber nicht alle.Dies ist ein nützlicher link, zu erklären, die Geschichte von C-Datentypen:
http://en.wikipedia.org/wiki/C_data_types
Also die Größe der Daten-Typ ist Plattform-abhängig, aber wenn Ihr int ist 32-bit lang, dann wird es in der Lage sein zu vertreten, eine von 2^32 verschiedene zahlen (0 - 4,294,967,295 wenn unsigned). Ebenso, wenn Sie Ihre kurze ist 16-bit lang ist dann kann es darstellen, eine von 2^16 verschiedene zahlen (0 - 65.535 an, wenn unsigned).
Diesem link finden Sie die details der Implementierung für Visual Studio 2005, wo ints sind 32-bits in der Größe (4 bytes) und die shorts sind 16-bit (2 bytes):
http://msdn.microsoft.com/en-us/library/s3f49ktz(v=vs. 80).aspx
Ihre genaue Implementierung hängt von Ihrem compiler.
Als für den letzten Teil Ihrer Frage, ja, wenn Sie versuchen, hinunter ein int größer als short ist der maximale Wert auf eine kurze, dann werden Sie am Ende mit einem anderen Wert (wahrscheinlich die ersten 16 bits, aber Sie sollten testen, um sicher zu sein).
Können wir nicht sagen, dass eine variable geben Sie den Namen (short, int, long, double, etc.) zu Punkt bestimmten bit-Länge über alle Mikroprozessor-Architekturen oder Programmiersprachen. Es ist vor allem angewiesen auf Mikroprozessoren " - Architektur und natürlich den Programmiersprachen Definitionen. In der Regel, signed/unsigned short sollte (würde ich erwarten) die Hälfte der bit-Größe von signed/unsigned int.
short
undint
kann sehr gut beide werden 16 bits. Das war der Fall auf DOS, BTW.Nun, zunächst müssen Sie verstehen, was ein unsigned int und short ist.
Alles wird zerlegt in bits.
Kurze ist 16 bits, jedes bit wird eine 1 oder eine 0. Zur Einfachheit werde ich zeigen, mit 4 bits
Beachten Sie, dass eine Zahl ohne Vorzeichen, der Wertebereich der zahlen ist größer, wir können machen
1111 = 15.
Aber mit einer Zahl unterzeichnet, die maximale Möglichkeit ist
0111 = 7.
Nun ein short hat 16 bit, so dass es
Ein Int hat 32 bit, mit einer Reihe von
char
ist mindestens 8 bit, einshort
oder eineint
16, einlong
32 bits. Und auf der CRAY-Sie sind der alle 32 bit.int
wird durch die Implementierung festgelegt. Die standard-Mandate, die Palette ist (wie fürshort
) mindestens-32767
zu32767
, so einint
müssen mindestens 16 bit breit. Fürunsigned
(int
undshort
), die Bandbreite muss mindestens0
zu65535
, so dass zu werden, müssen mindestens 16 bit breit. Auch die standard-Mandate, dass der Bereich der(unsigned) short
enthalten ist, im Bereich von(unsigned) int
, und das Spektrum der(unsigned) char
enthalten sein muss, im Bereich von(unsigned) short
. Es ist völlig legitim, dass alle diese Typen haben die gleiche Breite.