第一部分 基本语言包括从第二章到第八章。第一章只是快速入门,进入第二章了~瓦咔咔~~
变量和基本类型
类型是所有程序的基础。它告诉我们数据代表什么意思以及可以对数据执行哪些操作。C++语言定义了几种基本类型:字符型、整型、浮点型等。C++还提供了可用于自定义数据类型的机制,标准库正是利用这些机制定义了许多更复杂的类型,比如可变长字符串string、vector等。
脚印:
1.算术类型:
类 型 | 含 义 | 最小存储空间 |
bool | 布尔型 | NA |
char | 字符型 | 8位 |
wchar_t | 宽字符型 | 16位 |
short | 短整型 | 16位 |
int | 整型 | 16位 |
long | 长整型 | 32位 |
float | 单精度浮点型 | 6位有效数 |
double | 双精度浮点型 | 10位有效数 |
long double | 扩展精度浮点型 | 10位有效数 |
让存储具有结构的最基本方法是用块(chunk)处理存储,通常将8位的块作为一个字节,32位或4个字节作为一个“字(word)”。
2.字面值常量:课通过在数值后面加L或l(字母“l”大写或小写)指定常量为long类型。推荐使用“L”。
类似地,可通过在数值后面加U或u定义unsigned类型。同时加L和U就能够得到unsigned long类型的字面值常量。但其后缀不能有空格:
128u /* unsigned */ 1024UL /* unsigned long */
1L /* long */ 8Lu /* unsigned long */
3.没有short类型的字面值常量!
4.各种转义字符同C语言。'/0'通常表示“空字符(null character)”。为了兼容C语言,C++中所有的字符串字面值都由编译器自动在末尾添加一个空字符。
5.不要依赖未定义的操作:使用了未定义操作的程序都是错误的,如果程序能够运行,也只是巧合。未定义的操作源于编译器不能检测到的程序错误或太麻烦以至无法检测的错误。
6.多行字面值:在一行的末尾加一反斜线符号可将此行和下一行当作同一行处理。注意反斜线符号必需是该行的尾字符——不允许有注释或空格符。
7.(New) C++程序员常常把变量称为“变量”或“对象(object)”。
8.(New)左值和右值
(1) 左值(lvalue,发音为ell-value):左值可以出现在赋值语句的左边或右边。
(2) 右值(rvalue,发音为are-value):右值只能出现在赋值的右边,不能出现在赋值语句的左边。
(3)变量是左值,因此可以出现在赋值语句的左边。数字字面值是右值,因此不能被赋值。
9.初始化:C++支持两种初始化变量的形式:复制初始化(copy- initialization)和直接初始化(direct-initialization)。复制初始化语法用等号(=),直接初始化是把初始化式放在括号中:
int ival(1024); // direct-initialization
int ival = 1024; // copy-initialization
这两种情形中,ival都被初始化为1024。
10.初始化不是赋值!!!
11.内置类型变量是否自动初始化取决于变量定义的位置。在函数体外定义的变量都初始化成0,在函数体里定义的内置类型变量不进行自动初始化。
12.使用未初始化的变量是常见的程序错误,通常也是难于发现的错误~~~
13.可以通过使用extern关键字声明变量名而不定义它。在C++语言中,变量必须且仅能定义一次,而且在使用变量之前必须定义或声明该变量。
14.作用域:
#include <iostream>
int main()
{
int sum = 0;
// sum values from 1 up to 10 inclusive
for (int val = 1; val <= 10; ++val)
sum += val; // equivalent to sum = sum + val
std::cout << "Sum of 1 to 10 inclusive is "
<< sum << std::endl;
return 0;
}
(New) 定义在所有函数外部的名字具有全局作用域(global scope),可以在程序中的任何地方访问。名字sum定义在main函数的作用域中,在整个main函数中都可以访问,但在main函数外则不能。变量sum有局部作用域(local scope)。名字val更有意思,它定义在for语句的作用域中,只能在for语句中使用,而不能用在main函数的其他地方。它具有语句作用域(statement scope)。
15.C++中作用域可嵌套
16. 魔数(magic number)
17.const限定符可以把一个对象转换成一个常量。因为常量在定义后就不能被修改,所以定义时必须初始化。
18.非const变量默认为extern。要使const变量能够在其他的文件中访问,必须显式地指定它为extern。
19.引用是一种复合类型,通过在变量名前添加“&”符号来定义。定义如下:type &id = object ;
20.引用是别名,当引用初始化后,只要该引用存在,它就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。
21.初始化是指明引用指向哪个对象的唯一方法。const引用是指向const的引用。非const引用只能绑定到与该引用同类型的对象。const引用则可以绑定到不同但相关的类型的对象或绑定到右值。
这章内容不少,先到此搁笔,择日再续~~~
——??XāΩādцぴ??