1]数据类型限制:
#include<stdio.h>
#include<limits.h>
int main(){
printf("\n INT_MAX : %d %x \n",INT_MAX,INT_MAX);
printf("\n INT_MIN : %d %x \n",INT_MIN,INT_MIN);
printf("\n SHRT_MAX : %d %x \n",SHRT_MAX,SHRT_MAX);
printf("\n SHRT_MIN : %d %x \n",SHRT_MIN,SHRT_MIN);
printf("\n LONG_MAX : %ld %lx \n",LONG_MAX,LONG_MAX);
printf("\n LONG_MIN : %ld %lx \n",LONG_MIN,LONG_MIN);
printf("\n USHRT_MAX : %u %x \n",USHRT_MAX,USHRT_MAX);
printf("\n UINT_MAX : %u %x \n",UINT_MAX,UINT_MAX);
printf("\n ULONG_MAX : %lu %lx \n",ULONG_MAX,ULONG_MAX);
return 0;
}
o/p :
-----
INT_MAX : 2147483647 7fffffff
INT_MIN : -2147483648 80000000
SHRT_MAX : 32767 7fff
SHRT_MIN : -32768 ffff8000
LONG_MAX : 9223372036854775807 7fffffffffffffff
LONG_MIN : -9223372036854775808 8000000000000000
USHRT_MAX : 65535 ffff
UINT_MAX : 4294967295 ffffffff
ULONG_MAX : 18446744073709551615 ffffffffffffffff
为什么没有无符号最小值?
答案 0 :(得分:7)
无符号最小值始终为零(根据定义 最小的无符号值)。因此,规范作者可能认为没有必要添加它们。
答案 1 :(得分:1)
你的答案是:
U<ANY_TYPE>_MIN
始终 0U;
这是如何定义无符号类型的。因此,没有必要
这些标识符。因此定义ULONG_MIN
等是多余的。