《C++ Primer》中对于如何选择我们要使用的类型给出了四条建议:

  1. 如果你知道变量不可能是负值的话,就使用无符号类型。
  2. 在整数运算中尽量选择int类型,而不是short,因为short一般太小了;在实际中,long一般都是和int是一样长的,所以如果你的数据超出了int能表示的范围,就直接使用long long,而不是long。
  3. 在算术表达式中不要使用不带符号修饰符的char类型,因为char类型在有的机器上面是unsigned char,在有的上面是signed char;也不要在算术表达式中使用bool类型,该类型只用来表示真或假。
  4. 涉及浮点数运算的场合使用double而不是float,因为float能表示的精度太小了。但双精度与单精度的计算速度往往差不了多少,在有些机器上面,双精度反而比单精度计算更快。

PS:这里给出的四条建议都很常规,需要注意的是第3条:

  • C或C标准中并没有明确规定char代表signed char还是unsigned char,具体是哪一种是有系统或者编译器决定的。所以我们使用的时候尽量避免使用不带符号修饰符的char类型。
  • bool类型只有true—1和false—0两个值。如果我们将一个非0(正数或负数,不论是整数还是非整数)的数赋给bool类型,那其值就会转换为true,0转换为false。反之,如果我们在算术表达式中将bool型赋给其他类型的变量,那也只会将0或1赋给变量,这往往都不是我们所预期的。所以在算术表达式中不要使用bool类型。