为什么没有无符号最小值?

时间:2014-08-16 03:56:21

标签: c

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

为什么没有无符号最小值?

2 个答案:

答案 0 :(得分:7)

无符号最小值始终为零(根据定义 最小的无符号值)。因此,规范作者可能认为没有必要添加它们。

答案 1 :(得分:1)

你的答案是: U<ANY_TYPE>_MIN 始终 0U; 这是如何定义无符号类型的。因此,没有必要 这些标识符。因此定义ULONG_MIN等是多余的。