I want to study it all the time , and now I am ready to study this book in the next mouth.
Time : 2014/07/02
先看一个程序体验一下:
#include <iostream> int main() { /*This is a test example*/ std::cout << "Enter two numbers:" << std::endl; int v1, v2; std::cin >> v1 >> v2; //below, you will add the valus 1 and 2; std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << std::endl; return 0; }
1.标准输入与输出对象
标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin(读作 see-in)的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为 cout(读作 see-out)的 ostream 类型对象,这个对象也称为标准输出。标准库还定义了另外两个 ostream 对象,分别命名为 cerr 和 clog(分别读作“see-err”和“see-log”)。cerr 对象又叫作标准错误,通常用来输出警告和错误信息给程序的使用者。而 clog 对象用于产生程序执行的一般信息。
2.关键概念:已初始化变量和未初始化变量
已初始化变量是指变量在定义时就给定一个值。未初始化变量则未给定初始值:
int val1 = 0; // initialized
int val2; // uninitialized
给变量一个初始值几乎总是正确的,但不要求必须这样做。当我们确定变量在第一次使用时会赋一个新值,那就不需要创建初始值。我们的第一个有意义的程序中,定义了未初始化变量,并立即读取值给它们。定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。
3.注释
C++ 中有单行注释和成对注释两种类型的注释。单行注释以双斜线(//)开头,行中处于双斜线右边的内容是注释,被编译器忽略。另一种定界符,注释对(/* */),是从 C 语言继承过来的。这种注释以“/*”
开头,以“*/”结尾。
注释对不可嵌套
编译器把落入注释对“/**/”之间的内容作为注释注释总是以 /* 开始并以 */ 结束。这意味着,一个注释对不能出现在另一个注释对中。由注释对嵌套导致的编译器错误信息容易使人迷惑。
4.控制结构
while 语句:while (condition) while_body_statement;
while (val <= 10) { sum += val; // assigns sum + val to sum ++val; // add 1 to val }
条件/condition是一个可求值的表达式,所以可以测试其结果。如果结果值非零,那么条件为真;如果值为零,则条件为假。
for 语句:头由三部分组成:一个初始化语句,一个条件,一个表达式。
for (int val = 1; val <= 10; ++val) sum += val; // equivalent to sum = sum + val
扼要重述一下,for 循环总的执行流程为:
1. 创建 val 并初始化为 1。
2. 测试 val 是否小于或等于 10。
3. 如果 val 小于或等于 10,则执行 for 循环体,把 val 加到 sum 中。
如果 val 大于 10,就退出循环,接着执行 for 语句体后的第一条语句。
4. val 递增。
5. 重复第 2 步的测试,只要条件为真,就继续执行其余步骤。
5.编译
编译器的部分工作是寻找程序代码中的错误。编译器不能查出程序的意义是否正确, 但它可以查出程序形式上的错误。下面是编译器能查出的最普遍的一些错误。
1. 语法错误。
2. 类型错误。
3. 声明错误。
错误信息包含行号和编译器对我们所犯错误的简要描述。按错误报告的顺序改正错误是个好习惯,通常一个错误可能会产生一连串的影响,并导致编译器报告比实际多得多的错误。最好在每次修改后或最多改正了一些显而易见的错误后,就重新编译代码。这个循环就是众所周知的编辑—编译—调试。