如何确定各种类型的取值范围?
1.最大值:最高位(符号位)为0,其余为1.
char_max = (char)(((unsigned char) ~0) >> 1);
说明:
~0:取反,使其没一位都为1,一个多少位,这就由硬件决定了,一般是32位。
(unsigned char) ~0:获得8位的数值
((unsigned char) ~0) >> 1:清除符号位,虽然符号位是最高位,但由于所有位都是1,故怎么移位都行。
(char)(((unsigned char) ~0) >> 1):强转,得到char类型能表示的的最大值
2.最小值:最高位为1,其余为0.
char_max = ~(char)(((unsigned char) ~0) >> 1); //原理同上