#include <stdio.h>
int main()
{
printf("signed int min = %d\n", -(int)((unsigned int) ~0 >> 1));
printf("signed int max = %d\n", (int)((unsigned int) ~0 >> 1));
}
(1)先把数字0的各个二进制位全部转换成1
~0
(2)将结果值转换成unsigned int类型
(unsigned int) ~0
(3)把上面的值右移一位以清除符号位
(unsigned int) ~0 >> 1
(4)最后把它转换成int类型
(int)(unsigned int) ~0 >> 1
法二调用头文件<limits.h>其中有各种类型的取值范围.
如:
#include <stdio.h>
#include <limits.h>
int main()
{
printf("signed int min = %d\n", INT_MIN);
printf("signed int max = %d\n", INT_MAX);
}