Linux宏之INT_MAX,INT_MIN等等

  为了移植性能的考虑,为了同一份代码在不同平台不同CPU下都能正确获得对应平台的各种数据大小范围,Linux下使用的宏是这样的:

1 #define INT_MAX ((int)(~0U>>1))
2 #define INT_MIN     (-INT_MAX - 1)
3 #define UINT_MAX    (~0U)
4 #define LONG_MAX    ((long)(~0UL>>1))
5 #define LONG_MIN    (-LONG_MAX - 1)
6 #define ULONG_MAX    (~0UL)
7 #define LLONG_MAX    ((long long)(~0ULL>>1))
8 #define LLONG_MIN    (-LLONG_MAX - 1)
9 #define ULLONG_MAX    (~0ULL)

以INT_MAX为例说明:符号整型数,0取反得到全F,右移1位空出符号位,得到最大的符号整型数,无论它是16位平台还是32位平台,都是正确的,其他各个功能都类似。

posted @ 2014-03-15 18:09  超级忍者龟  阅读(1879)  评论(0)    收藏  举报