2013-03-19 17 views
6

W następującej funkcji:Jaki jest "krótki" typ danych w C?

void AddWordData(FILE* dataFile, short word, int* dc) 
{ 
    fprintf(dataFile, "%06o\n", word); 
    ++(*dc); 
} 

funkcja jest coraz krótki typ. Zrobiłem trochę wyszukiwania w sieci, ale znalazłem tylko krótki int. co to znaczy, gdy funkcja otrzymuje krótki typ? jaki to typ danych?

+2

Tak samo, jak krótkie int. –

+0

Kolejne pytanie, które pojawiło się podczas, co dokładnie wydrukowano, gdy napisane "% 06o \ n" – Yuval

+2

'% 06o \ n' To doda 6 dopełnienia' 0' i wydrukuje 'słowo' w' ósemku' z przełamaniem linii ('' \ n'') na końcu. –

Odpowiedz

14

short jest skrótem od short int. Są synonimami. short, short int, signed short i signed short int są tym samym typem danych. Dokładnie, ile bitów są w short zależy od kompilatora i systemu, ale wymagane jest posiadanie at least 16 bits:

Wszelkie kompilator zgodny z normą musi również przestrzegać następujących limitów w odniesieniu do zakresu wartości dowolny określony typ może zaakceptować. Zauważ, że są to dolne limity: implementacja może przekroczyć dowolne lub wszystkie z nich. Należy również zauważyć, że minimalny zakres znaków zależy od tego, czy znak char jest uznawany za podpisany czy niepodpisany. ... krótki int: -32767 do +32767.

więcej z Wikipedia:

Rzeczywista wielkość całkowitą typu zależy od realizacji. Jedyną gwarancją jest to, że długa długa nie jest mniejsza niż długa, która nie jest mniejsza niż int, która nie jest mniejsza niż krótka. Również int powinno być typem całkowitym, z którym procesor docelowy jest najbardziej wydajny. Pozwala to na dużą elastyczność: na przykład wszystkie typy mogą mieć format 64-bitowy. Jednak tylko kilka różnych schematów szerokości całkowitej (modele danych) jest popularnych, a ponieważ model danych określa, w jaki sposób różne programy komunikują się, stosowany jest jednolity model danych w obrębie danego interfejsu aplikacji systemu operacyjnego. [3]

W praktyce należy zauważyć, że znak char ma zwykle rozmiar 8 bitów, krótki ma zwykle rozmiar 16 bitów, a długość zazwyczaj wynosi 32 bity (podobnie znaki bez znaku, długość bez znaku i długość bez znaku). Dotyczy to na przykład platform tak różnorodnych jak lata 90-te Sun0S 4 Unix, Microsoft MSDOS, nowoczesny Linux i Microchip MCC18 dla wbudowanych 8-bitowych mikrokontrolerów PIC.