Οι ειδικής χρήσης τύποι χρησιμοποίησαν συνήθως:
Μεταβλητός τύπος |
Περιγραφή |
size_t |
τύπος που χρησιμοποιείται ανυπόγραφος για την αποθήκευση των μεγεθών των αντικειμένων στις ψηφιολέξεις |
time_t |
χρησιμοποιημένος για να αποθηκεύσει τα αποτελέσματα της χρονικής () λειτουργίας |
clock_t |
χρησιμοποιημένος για να αποθηκεύσει τα αποτελέσματα της λειτουργίας ρολογιών () |
ΑΡΧΕΙΟ |
χρησιμοποιημένος για την πρόσβαση ενός ρεύματος (συνήθως ένα αρχείο ή μια συσκευή) |
ptrdiff_t |
υπογεγραμμένος τύπος της διαφοράς μεταξύ 2 δεικτών |
div_t |
χρησιμοποιημένος για να αποθηκεύσει τα αποτελέσματα της div () λειτουργίας |
ldiv_t |
χρησιμοποιημένος για να αποθηκεύσει τα αποτελέσματα της λειτουργίας ldiv () |
fpos_t |
χρησιμοποιημένος για να φυλάξει τις πληροφορίες θέσης αρχείων |
va_list |
χρησιμοποιημένος στο μεταβλητό χειρισμό επιχειρήματος |
wchar_t |
ευρύς τύπος χαρακτήρα (που χρησιμοποιείται για τα εκτεταμένα σύνολα χαρακτήρα) |
sig_atomic_t |
χρησιμοποιημένος στους χειριστές σημάτων |
Jmp_buf |
χρησιμοποιημένος για τα μη-τοπικά άλματα |
Για να καταλάβετε καλύτερα αυτές οι μεταβλητές πάρτε ένα παράδειγμα:
/* Πρόγραμμα για να ειπωθεί η σειρά και το μέγεθος στις ψηφιολέξεις της μεταβλητής γ */
#include <stdio.h>
int main()
{
int a; /* απλός τύπος ακέραιων αριθμών */
long int b; /* μακροχρόνιος τύπος ακέραιων αριθμών */
short int c; /* σύντομος τύπος ακέραιων αριθμών */
unsigned int d; /* ανυπόγραφος τύπος ακέραιων αριθμών */
char e; /* τύπος χαρακτήρα */
float f; /* τύπος κινητής υποδιαστολής */
double g; /* διπλή κινητή υποδιαστολή ακρίβειας */
a = 1023;
b = 2222;
c = 123;
d = 1234;
e = 'X';
f = 3.14159;
g = 3.1415926535898;
printf( "\nA char is %d bytes", sizeof( char ));
printf( "\nAn int is %d bytes", sizeof( int ));
printf( "\nA short is %d bytes", sizeof( short ));
printf( "\nA long is %d bytes", sizeof( long ));
printf( "\nAn unsigned char is %d bytes",
sizeof( unsigned char ));
printf( "\nAn unsigned int is %d bytes",
sizeof( unsigned int ));
printf( "\nAn unsigned short is %d bytes",
sizeof( unsigned short ));
printf( "\nAn unsigned long is %d bytes",
sizeof( unsigned long ));
printf( "\nA float is %d bytes", sizeof( float ));
printf( "\nA double is %d bytes\n", sizeof( double ));
printf("a = %d\n", a); /* decimal output */
printf("a = %o\n", a); /* octal output */
printf("a = %x\n", a); /* hexadecimal output */
printf("b = %ld\n", b); /* decimal long output */
printf("c = %d\n", c); /* decimal short output */
printf("d = %u\n", d); /* unsigned output */
printf("e = %c\n", e); /* character output */
printf("f = %f\n", f); /* floating output */
printf("g = %f\n", g); /* double float output */
printf("\n");
printf("a = %d\n", a); /* simple int output */
printf("a = %7d\n", a); /* use a field width of 7 */
printf("a = %-7d\n", a); /* left justify in
field of 7 */
c = 5;
d = 8;
printf("a = %*d\n", c, a); /* use a field width of 5*/
printf("a = %*d\n", d, a); /* use a field width of 8 */
printf("\n");
printf("f = %f\n", f); /* simple float output */
printf("f = %12f\n", f); /* use field width of 12 */
printf("f = %12.3f\n", f); /* use 3 decimal places */
printf("f = %12.5f\n", f); /* use 5 decimal places */
printf("f = %-12.5f\n", f); /* left justify in field */
return 0;
}
|