2013-04-29 17 views
7

Czy istnieje różnica między niepodpisaną krótką int i niepodpisaną krótką deklacją wc, a jeśli tak, to co to jest? Próbowałem szukać w Internecie, ale nie mogłem znaleźć nic wartościowego.różnica między niepodpisanym krótkim int i unsigned short

unsigned short int x1; 
unsigned short x2; 

Na koniec, jeśli istnieje różnica, w jaki sposób mogę je odpowiednio przesłać?

+1

Nie ma różnicy. – Daniel

Odpowiedz

10

Od C11 [PDF] (nieistotne części pominięto) (Kopalnia nacisk):

6.7.2.2:

Przynajmniej jeden typ specifier zostaną podane w specyfikatorów deklaracji w każdej deklaracji, oraz w lista kwalifikatora specyfikatora w każdej deklaracji struktury i nazwie typu. Każda lista specyfikatorów typu musi być jednym z następujących wielosensów (rozdzielanych przecinkami, gdy tam jest więcej niż jeden multiset na pozycję); specyfikatory typu mogą występować w dowolnej kolejności, ewentualnie wymieszane z innymi specyfikatorami deklaracji.

  • ...
  • short, signed short, short int lub signed short int
  • unsigned short lub unsigned short int
  • ...

6.7.2.5:

Każdy z multisets oddzielonych przecinkami oznacza tego samego typu ...

+0

Ważne, aby pamiętać, że fakt, że są one takie same, nie gwarantuje ich wielkości. Mogą to być 2 bajty, 4 bajty, 100 bajtów, cokolwiek. Dopóki nie są dłuższe niż "int". – Daniel

+2

Jeśli chcesz utworzyć łącze do wygodniejszej internetowej kopii C11, tutaj: http: // port70.net/~ nsz/c/c11/n1570.html –

+0

Zostawię twój link w komentarzu, ale pozostawiam link do pliku PDF w odpowiedzi. Dobrą rzeczą w formacie pdf jest to, że można go pobrać i umieścić na pulpicie i jest łatwiejszy dostęp. Dobry link, ale zdecydowanie lepiej cytować. – Shahbaz

3

Po prostu użycie short jest krótką (nie gra słów) sposobem pisania short int. Tylko long jest krótką ręką dla long int.

2

Są to synonimy. Jeśli kompilator robi z nimi coś innego, jest zepsuty.

-2

Nie ma różnicy. Wypróbuj operator sizeof:

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

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

Tak jak powiedziałem w innym komentarzu: nawet jeśli są one takie same (a twoja odpowiedź jest poprawna), nie możesz przedstawić przykładu, aby coś udowodnić. 11 jest liczbą pierwszą, ale nie powoduje to, że wszystkie liczby nieparzyste są pierwsze. Nawiasem mówiąc, 'int' i' unsigned int' również mają ten sam rozmiar, ale nie są one takie same. – Shahbaz

+0

Ponadto rozmiar typu może się zmieniać między różnymi implementacjami. – effeffe

3

Nie ma różnicy w obu.

Druga jest uważana za int i po prostu jest pomijana.