#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); }