2013-04-29 7 views
7

Gibt es einen Unterschied zwischen unsigned short int und unsigned short declueration in c und wenn ja, was ist das bitte? Ich habe versucht, online zu schauen, konnte aber nichts lohnenswertes finden.Unterschied zwischen unsigned short int und unsigned short

unsigned short int x1; 
unsigned short x2; 

Schließlich, wenn es einen Unterschied gibt, wie kann ich sie jeweils miteinander gegossen bitte?

+1

gibt es keinen Unterschied. – Daniel

Antwort

10

Von C11 [PDF] (irrelevante Teile weggelassen) (Hervorhebung von mir):

6.7.2.2:

Mindestens ein Typspezifizierer ist in der Erklärung Bezeich in jeder Erklärung gegeben werden, und in der Spezifizierer-Qualifikationsliste in jeder Strukturdeklaration und in jedem Typnamen. Jede Liste von Typspezifizierern muss einer der folgenden Multisets sein (durch Kommata getrennt, wenn mehr als ein Multiset pro Element ist); Die Typspezifizierer können in beliebiger Reihenfolge auftreten, möglicherweise , vermischt mit den anderen Deklarationsspezifizierern.

  • ...
  • short, signed short, short int oder signed short int
  • unsigned short oder unsigned short int
  • ...

6.7.2.5:

Jede der durch Kommata getrennte Multimengen bezeichnet die gleiche Art ...

+0

Wichtig zu beachten, dass die Tatsache, dass sie gleich sind, nicht garantiert, was ihre Größe ist. Sie könnten 2 Bytes, 4 Bytes, 100 Bytes, was auch immer sein. Solange sie nicht länger als "int" sind. – Daniel

+2

Wenn Sie eine bequemere Online-Kopie von C11 verknüpfen möchten, hier: http: // port70.net/~ nsz/c/c11/n1570.html –

+0

Ich behalte Ihren Link in den Kommentar, würde aber den Link zu der PDF in der Antwort behalten. Die gute Sache über das pdf ist, dass Sie es auf dem Desktop platzieren herunterladen und sind leichter zugänglich. Gute Verbindung, es ist definitiv besser für Zitate. – Shahbaz

3

Nur mit short ist eine kurze Hand (kein Wortspiel beabsichtigt) Schreibweise short int. Nur eine long ist eine Kurzhand für long int.

2

Sie sind Synonyme. Wenn der Compiler etwas anderes mit ihnen macht, ist es kaputt.

-2

Es gibt keinen Unterschied. Versuchen Sie den sizeof Operator:

main() 
{ 
    unsigned short int x1; 
    unsigned short x2; 

    printf("%d/%d\n", sizeof x1, sizeof x2); 
} 
+6

Wie ich in einem anderen Kommentar gesagt habe: Obwohl sie gleich sind (und Ihre Antwort ist richtig), können Sie kein Beispiel präsentieren, um etwas zu beweisen. 11 ist Primzahl, aber das macht nicht alle ungeraden Primzahlen. Übrigens haben "int" und "unsigned int" auch die gleiche Größe, aber sie sind nicht gleich. – Shahbaz

+0

Außerdem kann sich die Größe eines Typs zwischen verschiedenen Implementierungen ändern. – effeffe

3

Kein Unterschied in den beiden.

Die zweite wird als int betrachtet und einfach weggelassen.