2. 变量和基本类型
- 任何常用的编程语言都具备一组公共的语法特征,不同的语言仅在特征的细节上有所区别。
2.1 基本内置类型
一般来说,类型float和double分别有7和16个有效位。
和C语言一样,C++的设计准则之一也是尽可能地接近硬件。
类型char在一些机器上是有符号的,而在另一些机器上又是无符号的,所以如果使用char进行运算特别容易出问题。
执行浮点数运算选用double,因为float通常精度不够而且双精度浮点数和单精度浮点数的计算代价相差无几。
程序应该尽量避免依赖于实现环境的行为。
notes:切勿混用带符号类型和无符号类型。
编译器在每个字符串的结尾处添加一个空字符(‘\0’),因此,字符串字面值的实际长度要比它的内容多1。
2.2 变量
未初始化的变量含有一个不确定的值,使用未初始化变量的值是一个错误的编程行为并且很难调试。
变量有且只能被定义一次,但是可以被多次声明。
2.3 复合类型
引用必须初始化。引用即别名。引用只能绑定在对象上,而不能与字面值或某*个表达式的计算结果绑定在一起。
使用未经初始化的指针是引起运行时错误的一大原因。
一旦定义了引用,就无法令其再绑定到另外的对象,之后每次使用这个引用都是访问它最初绑定的那个对象。
void *是一种特殊的指针类型,可用于存放任意对象的地址。
面对一条比较复杂的指针或引用的声明语句时,从右到左阅读有助于弄清楚它的真实含义。
int *p;int *&r = p;
2.4 const限定符
- const对象一旦创建后其值就不能再改变,所以const对象必须初始化。主要的限制就是只能在const类型的对象上执行不改变其内容的操作。
2.6 自定义数据结构
最基础的层面理解,数据结构是一组相关的数据元素组织起来然后使用它们的策略和方法。
一般来说,最好不要把对象的定义和类的定义放在一起。
头文件一旦改变,相关的源文件必须重新编译以获取更新过的声明。
预处理器,头文件保护符。一般把预处理变量的名字全部大写。
待完善…