C++ primer学习笔记 第二章 变量和基本类型

第二章 变量和基本类型

基本算数类型

  • char: 8bits
  • short: 16bits
  • int: 16bits (在32位机器中是32bits)
  • long: 32bits
  • long long: 64bits (是在C++11中新定义的)
  • float:6位有效数字。
  • double:10位有效数字。
  • long double:10位有效数字。

如何选择类型

  • 1.当明确知晓数值不可能是负数时,选用无符号类型;
  • 2.使用int执行整数运算。一般long的大小和int一样,而short常常显得太小。除非超过了int的范围,选择long long
  • 3.算术表达式中不要使用charbool
  • 4.浮点运算选用double

类型转换

  • 非布尔型赋给布尔型,初始值为0则结果为false,否则为true。
  • 布尔型赋给非布尔型,初始值为false结果为0,初始值为true结果为1。

左值和右值

  • 左值(l-value)可以出现在赋值语句的左边或者右边,比如变量;
  • 右值(r-value)只能出现在赋值语句的右边,比如常量。

字符串字面值

  • 使用空格连接,继承自C。
  • 字符字面值:单引号, 'a'
  • 字符串字面值:双引号, "Hello World""

初始化和赋值

  • 对象的初始化:定义时指定了初始值的对象成为是已初始化的。
  • 初始化不是赋值!:初始化是创建变量并给它赋予初始值;赋值是擦除对象的当前值并用新值代替。
  • 建议初始化每一个内置类型的变量。
  • 构造函数:定义如何进行初始化的成员函数。
  • 列表初始化:使用花括号 {} 中包含一系列相同类型的值。
  • 默认初始化:定义时没有指定初始值会被默认初始化;在函数体内部的内置类型变量将不会被初始化。

变量的定义和声明

  • 变量的定义:变量的定义用于分配存储空间,还可以指定初始值。
  • 变量的声明:用于向程序表明变量的类型和名字。
  • extern:只是说明变量定义在其他地方。
  • 只声明而不定义: 在变量名钱添加关键字 extern,如extern int i;
  • 变量只能被定义一次,但是可以多次声明。

引用

  • 引用:引用是一个对象的别名,如int &refVal = val;
  • 引用必须初始化。
  • 引用和它的初始值是绑定bind在一起的,而不是拷贝。

指针

  • 是一种 "指向(point to)"另外一种类型的复合类型。
  • 定义指针类型: int *ip1;从右向左读ip1是指向int类型的指针。
  • 指针存放某个对象的地址
  • 获取对象的地址: int i=42; int *p = &i;。 &是取地址符。
  • 指针的值的四种状态:1.指向一个对象;2.指向紧邻对象的下一个位置;3.空指针;4.无效指针。
  • 指针访问对象: cout << *p;, *解引用符
  • 空指针不指向任何对象。
  • void*指针可以存放任意对象的地址。
  • 其他指针类型必须要与所指对象严格匹配
  • 两个指针相减的类型是ptrdiff_t

const限定符

  • 动机:希望定义一些不能被改变值的变量。
  • const对象必须初始化,且不能被改变
  • const变量默认不能被其他文件访问,非要访问,必须在指定const前加extern。
  • reference to const(对常量的引用):指向const对象的引用,如 const int ival=1; const int &refVal = ival;,可以读取但不能修改refVal。
  • pointer to const(指向常量的指针):不能用于改变其所指对象的值, 如 const double pi = 3.14; const double *cptr = π
  • const pointer:指针本身是常量,如 int i = 0; int *const ptr = &i;
  • 顶层const:指针本身是个常量
  • 底层const:指针指向的对象是个常量。拷贝时严格要求相同的底层const资格。
  • 常量表达式:指值不会改变,且在编译过程中就能得到计算结果的表达式。

处理类型

  • 类型别名:使用typedef来定义类型的同义词。 typedef double wages;
  • 别名声明(alias declaration): using SI = Sales_item;(C++11)
  • auto类型说明符:让编译器自动推断类型。会忽略顶层const。(C++11)
  • decltype:选择并返回操作数的数据类型。不会忽略顶层const。(C++11)

 

 

你可能感兴趣的:(C++学习笔记,c++,变量,基本类型)