假设我们不知道目标平台的char、short、int长度是多少个字节,如何得到这个类型的最大值和最小值?
简单思考过后,我觉得可以采用无符号的最大值再右移1位的方式来得到有符号整数的最大值,把这个值取反又能得到最小值。
使用下面的C语言代码进行验证,发现打印值是正确的。
把代码中的 int 换成 char 和 short 都能正常打印出最大值和最小值。
void main(void)
{
unsigned int tmp;
int max_val;
int min_val;
tmp = 0 - 1;
tmp = tmp >> 1;
max_val = tmp;
min_val = ~tmp;
printf("min=%d, max=%d\n", min_val, max_val);
system("pause");
}