#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);
}
本文详细解释了如何通过位操作和类型转换来获取C语言中整数的最小值和最大值,包括使用~0进行位翻转、类型转换以及右移操作。同时提供了一个替代方法,利用预定义的头文件<limits.h>中的宏来获取这些值。
3192

被折叠的 条评论
为什么被折叠?



