int类型不能toString java int类型不为空_字符串


2.1 基本内置类型

  • 基本数据类型:算术类型(arithmetic type)和空类型(void)。
  • 算术类型包含字符整形数布尔值、和浮点数

2.1.1 算术类型

  • 算术类型分为两类:整形(integral type,包括字符和布尔类型在内)和浮点型。
  • C++ 算术类型:


int类型不能toString java int类型不为空_字符串_02


  • 除字符和布尔类型之外,其他整型用于表示(可能)不同尺寸的整数。C++语言规定一个 int 至少和一个 short 一样大,一个 long 至少和一个 int 一样大,一个 long long 至少和一个 long 一样大。其中,数据类型 long long 是在 C++11 中新定义的。
  • 为了赋予内存中某个地址明确的含义,必须首先知道存储在该地址的数据的类型。类型决定了数据所占的比特数以及该如何解释这些比特的内容。


int类型不能toString java int类型不为空_字面值_03


  • 通常,float 以一个字(32比特)来表示,double 以 2 个字(64比特)来表示。一般来说,类型 float 和 double 分别有 7 和 16 个有效位。
  • 除去布尔型和扩展的字符型之外,其他整型可以划分为带符号的(signed)无符号的(unsigned)两种。带符号类型可以表示正数、负数或0,无符号类型仅能表示大于等于 0 的值。
  • 如何选择类型:


int类型不能toString java int类型不为空_int 类型怎么表示不等于空_04


2.1.2 类型转换

  • 类型所能表示的值的范围决定了转换的过程:


int类型不能toString java int类型不为空_带符号_05


  • 切勿混用带符号类型和无符号类型。如果表达式里既有带符号类型又有无符号类型,当带符号类型取值为负时会出现异常结果,这是因为带符号数会自动地转换成无符号数。例如,在一个形如 a*b 的式子中,如果 a = -1, b = 1 ,而且 a 和 b 都是 int,则表达式的值显然为 -1。然而,如果 a 是 int,而 b 是 unsigned,则结果须视在当前机器上 int 所占位数而定。在我们的环境里,结果是 4294967295。

2.1.3 字面值常量

  • 我们可以将整型字面值写作十进制数、八进制数或十六进制数的形式。以 0 开头的整数代表八进制数,以 0x 或 0X 开头的代表十六进制数。
  • 整型字面值具体的数据类型由它的值和符号决定。默认情况下,十进制字面值是带符号数,八进制和十六进制字面值既可能是带符号的也可能是无符号的。十进制字面值的类型是 int、long 和 long long 中尺寸最小的那个(例如,三者当中最小的是 int),当然前提是这种类型要能容纳下当前的值。
  • 尽管整型字面值可以存储在带符号数据类型中,但严格来说,十进制字面值不会是负数。如果我们使用了一个形如 -42 的负十进制字面值,那个负号并不在字面值之内,它的作用仅仅是对字面值取负值而已。
  • 默认的,浮点型字面值是一个 double。
  • 由单引号括起来的一个字符称为 char 型字面值,双引号括起来的零个或多个字符则构成字符串字面值。
  • 编译器在每个字符串的结尾处添加一个空字符('0'),因此,字符串字面值的实际长度要比它的内容多 1。
  • 如果两个字符串字面值位置紧邻且仅由空格、缩进和换行符分隔,则它们实际上是一个整体。当书写的字符串字面值比较长,写在一行里不太合适时,就可以采取分开书写的方式:
// 分多行书写的字符串字面值
std::cout<<"a really, really long string literal"
            "that spans two lines"<<std::endl;


  • C++ 语言规定的转义序列包括:
换行符     n      横向制表符   t      报警(响铃)符     a
纵向制表符  v      退格符      b      双引号            "
反斜线           问号        ?      单引号            '
回车符     r      进纸符      f


  • 指定字面值的类型


int类型不能toString java int类型不为空_int 类型怎么表示不等于空_06