- 
      
- 
        Save kosh04/1218712 to your computer and use it in GitHub Desktop. 
| #include <stdio.h> | |
| #include <stdint.h> | |
| #include <stddef.h> | |
| #include <sys/types.h> | |
| #include <wchar.h> | |
| #include <time.h> | |
| // XXX: "%zd" format cannot work in VC, MinGW | |
| #define prints(type) printf(#type "\t\t" "%lu\n", (unsigned long)sizeof(type)) | |
| int main(void) | |
| { | |
| printf("Type" "\t\t" "Byte\n"); | |
| printf("----\n"); | |
| prints(char); | |
| prints(char *); | |
| prints(short); | |
| prints(int); | |
| prints(long); | |
| prints(long long); | |
| prints(float); | |
| prints(double); | |
| prints(long double); | |
| prints(void); | |
| prints(void *); | |
| prints(size_t); | |
| prints(ssize_t); | |
| prints(time_t); | |
| prints(off_t); | |
| prints(wchar_t); | |
| prints(intptr_t); | |
| prints(ptrdiff_t); | |
| prints(_Bool); | |
| return 0; | |
| } | 
// win32 mingw, win32 pcc
char        1
char *      4
short       2
int     4
long        4
long long       8
float       4
double      8
long double     12
void        1
void *      4
size_t      4
ssize_t     4
time_t      4
off_t       4
wchar_t     2
intptr_t        4
ptrdiff_t       4
_Bool       1
// win64 mingw-w64
char            1
char *          8
short           2
int             4
long            4
long long               8
float           4
double          8
long double             16
void            1
void *          8
size_t          8
ssize_t         8
time_t          8
off_t           4
wchar_t         2
intptr_t                8
ptrdiff_t               8
_Bool           1
// FreeBSD 8.1 i386
char            1
char *          4
short           2
int             4
long            4
long long               8
float           4
double          8
long double             12
void            1
void *          4
size_t          4
ssize_t         4
time_t          4
off_t           8
wchar_t         4
intptr_t                4
ptrdiff_t               4
_Bool           1
// Ubuntu 10.04.3 i686
char        1
char *      4
short       2
int     4
long        4
long long       8
float       4
double      8
long double     12
void        1
void *      4
size_t      4
ssize_t     4
time_t      4
off_t       4
wchar_t     4
intptr_t        4
ptrdiff_t       4
_Bool       1
// win32 VC
char        1
char *      4
short       2
int     4
long        4
long long       8
float       4
double      8
long double     8
void        0       // warning C4034
void *      4
size_t      4
ssize_t     undefined
time_t      8
off_t       4
wchar_t     2
intptr_t        4
ptrdiff_t       4
_Bool       undefined
// Borland C++ 5.5.1 for Win32
char        1
char *      4
short       2
int     4
long        4
long long   undefined
float       4
double      8
long double     10
void    undefined
void *      4
size_t      4
ssize_t     undefined
time_t      4
off_t       4
wchar_t     2
intptr_t    undefined
ptrdiff_t       4
_Bool       undefined
// CentOS 5.6 Intel Xeon x86_64-redhat-linux
char            1
char *          8
short           2
int             4
long            8
long long               8
float           4
double          8
long double             16
void            1
void *          8
size_t          8
ssize_t         8
time_t          8
off_t           8
wchar_t         4
intptr_t                8
ptrdiff_t               8
_Bool           1
// FreeBSD 8.2 amd64
char            1
char *          8
short           2
int             4
long            8
long long               8
float           4
double          8
long double             16
void            1
void *          8
size_t          8
ssize_t         8
time_t          8
off_t           8
wchar_t         4
intptr_t                8
ptrdiff_t               8
_Bool           1
// win32 LSI C-86 試食版
char        1
char *      2
short       2
int     2
long        4
long long       undef
float       4
double      8
long double     10
void        undef
void *      2
size_t      2
ssize_t     undef
time_t      4
off_t       4
wchar_t     undef
intptr_t        undef
ptrdiff_t       2
_Bool       undef
// win32 cygwin
char 1
char * 4
short 2
int 4
long 4
long long 8
float 4
double 8
long double 12
void 1
void * 4
size_t 4
ssize_t 4
time_t 4
off_t 8
wchar_t 2
intptr_t 4
ptrdiff_t 4
_Bool 1