Linux下的整型数据输出格式。

写代码的时候常常会用到这些这些off_t, time_t这样的数据类型,转了一份老外的代码。

#define _FILE_OFFSET_BITS 64 #include <inttypes.h> #include <limits.h> #include <stdio.h> #include <time.h> /* for time_t */ #include <sys/types.h> /* for off_t */ #define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) #define TYPE_MAX(t) \ ((t) (! TYPE_SIGNED (t) \ ? (t) -1 \ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))) int main(void) { uint32_t uint32=0xffffFFFF; uintmax_t uintmax=UINTMAX_MAX; off_t offset=TYPE_MAX(off_t); /* Depends on _FILE_OFFSET_BITS */ time_t time=TYPE_MAX(time_t); /* May be float! */ size_t size=TYPE_MAX(size_t); /* Depends on int size */ printf("native int bits%20u %16x\n", sizeof(int)*CHAR_BIT, UINT_MAX); printf("uint32_t max %20"PRIu32" %16"PRIx32"\n" "uintmax_t max %20ju %16jx\n" /* try PRIuMAX if %ju unsupported */ "off_t max %20jd %16jx\n" /* try PRIdMAX if %jd unsupported */ "time_t max %20jd %16jx\n" "size_t max %20zu %16zx\n", uint32, uint32, uintmax, uintmax, (intmax_t)offset, (intmax_t)offset, (intmax_t)time, (intmax_t)time, size, size); return 0; }
原文链接:
http://www.pixelbeat.org/programming/gcc/int_types/

posted @ 2012-08-13 12:03  伏者  阅读(739)  评论(0)    收藏  举报