2013-03-19 6 views
6

In der folgenden Funktion:Was ist der 'kurze' Datentyp in C?

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

die Funktion eine kurze Art erhält. Ich habe ein wenig im Internet gesucht, aber nur kurz int gefunden. Was bedeutet es, wenn eine Funktion einen kurzen Typ erhält? Welcher Datentyp ist das?

+2

Wie kurze int. –

+0

Eine andere Frage, die während, was genau gedruckt wurde, wenn geschrieben "% 06o \ n" – Yuval

+2

'% 06o \ n' Dies fügt 6 padding' 0's und print 'word' in' octal' mit einem Zeilenumbruch ('' \ n'') am Ende. –

Antwort

14

short ist die Abkürzung für short int. Sie sind auch gleich. short, short int, signed short und signed short int sind alle vom selben Datentyp. Genau wie viele Bits in einem short hängt vom Compiler und dem System, aber es ist erforderlich, haben at least 16 bits:

Jeder Compiler der Norm entsprechen, müssen auch in Bezug auf den Bereich der Werte folgende Grenzwerte einhalten jeder bestimmter Typ kann akzeptieren. Beachten Sie, dass dies untere Grenzen sind: Eine Implementierung ist frei, einige oder alle zu überschreiten. Beachten Sie auch, dass der Mindestbereich für ein Zeichen davon abhängt, ob ein Zeichen als signiert oder nicht signiert gilt. ... kurz int: -32767 bis +32767.

Mehr von Wikipedia:

Die tatsächliche Größe der Integer-Typen variiert je nach Implementierung. Die einzige Garantie ist, dass das Long Long nicht kleiner als Long ist, welches nicht kleiner als Int ist, welches nicht kleiner als Short ist. Außerdem sollte int der Ganzzahltyp sein, mit dem der Zielprozessor am effizientesten arbeitet. Dies ermöglicht eine große Flexibilität: Beispielsweise können alle Typen 64-Bit sein. Allerdings sind nur einige verschiedene Integer-Weitenschemata (Datenmodelle) populär, und da das Datenmodell definiert, wie verschiedene Programme kommunizieren, wird innerhalb einer gegebenen Betriebssystemanwendungsschnittstelle ein einheitliches Datenmodell verwendet. [3]

In der Praxis sollte beachtet werden, dass char normalerweise 8 Bits groß ist, kurz ist normalerweise 16 Bits groß und lang ist normalerweise 32 Bits groß (ebenso unsigned char, unsigned short und unsigned long). Dies gilt zum Beispiel für so unterschiedliche Plattformen wie SunOS Unix 4, Microsoft MSDOS, modernes Linux und Microchip MCC18 für eingebettete 8-Bit-PIC-Mikrocontroller.