1、C和C++语言中基本的数据类型有:字符型(char),整形(short, int, long), 浮点型(float, double)

  同时字符型和整形还可以继续分为带符号的和不带符号的,默认情况下都是带符号的,如果想使用不带符号的,则使用时带上 unsigned说明即可,如果是带符号的,那么高位将表示符号位,高位为0表示为正数,高位为1表示为负数,因此根据这个可以得到不同类型在分别带符号和不带符号的情况下表示的数据范围:

  2、对于字符型和整形特别需要注意其表示的范围,如果运算导致超出其范围的处理,如以下的代码:
  int main()
  {
  signed char ch = 127;
  ch += 1;
  printf("%d ", ch);
  return 0;
  }
  输出结果为:-128,注意,定义ch时赋予的值为127,已经是char能表示的大数,其终结果-128的来历是这样的:
  第一步:首先127在计算机中用二进制表示为:01111111;
  第二步:01111111 + 00000001 = 10000000;
  第三步:由于ch是带符号的,当高位为1时,表示是负数,而负数的计算机中是利用补码来存储的,回忆计算负数补码的方法(首先取负数的值,然后求二进制,对二进制取反,在对取反后的值加1,即为负数的补码);
  第四步:于是根据求补码的反步骤,我们来求原始的负数,由于本题中补码为10000000,首先10000000 - 00000001 = 01111111,然后对01111111取反为10000000,10000000 = 128,由于本身是负数,即ch为-128.