C++ primer plus 第五章笔记
2017-12-09 10:11
218 查看
复合语句
因为循环体必须是一条语句,但是使用过程中,多条语句也是不可避免的。因此就可以将多条语句,利用一对花括号来构造一条复合语句(也称为代码块,block),从而只被视为一条语句。但是复合语句还有一种有趣的特性。如果在复合语句中定义一个新的变量,则仅当程序执行该复合语句中的语句时,该变量才存在,但复合语句执行完毕之后,变量则会被释放。
//P138 #include<iostream> int main() { using namespace std; int x = 20; { //block starts int y = 100; cout << x << endl; //ok cout << y << endl; //ok } //block ends cout << x << endl; //ok cout << y << endl; //invalid,won't compile 此处的y是未声明和初始化的变量 return 0; }
若是在如果在复合语句声明了一个变量,但是在复合语句外同时也声明了这个变量,则复合语句的变量的值则只会在复合语句中使用,复合语句的变量会隐藏复合语句外的变量的值,但是复合语句结束后,变量会再次可见。
//P138 #include<iostream> int main() { using std::cout; using std::endl; using std::cin; int x = 20; //original x { //block starts cout << x << endl; //use original x = 20 int x = 100; //new x cout << x << endl; //use new x = 100 } //block ends cout << x << endl; //use original x = 20 cin.get(); return 0; }
运行结果:
20 100 20
关于运算符()
的优先级:
//P140 #include<iostream> int main() { using namespace std; int cats; cats = 17, 240; cout << "cats = 17, 240 = " << cats << endl; (cats = 17), 240; cout << "(cats = 17), 240 = " << cats << endl; cats = (17, 240); cout << "cats = (17, 240) = " << cats << endl; cats = (240, 17); cout << "cats = (240, 17) = " << cats << endl; cin.get(); return 0; }
输出结果
cats = 17, 240 = 17 (cats = 17), 240 = 17 cats = (17, 240) = 240 cats = (240, 17) = 17
C-风格字符串的比较
word == "mate";
首先,数组名是数组的地址。同样,右边的字符串的也是地址,因此这里同时进行了地址的比较;
但是,两个不一样的地址,可能包含同一个字符串;
因此,比较需要利用函数
strcmp()进行比较。
strcmp()的用法
该函数接受两个字符串地址作为参数,同时也可以是指针,字符串常量或字符数组名;
如果两个字符串相同,该函数将返回零;
如果第一个字符串按字母顺序排在第二个字符串之前,则
strcpy()将返回一个负数值;
如果第一个字符串按字母顺序排在第二个字符串之后,则
strcpy()将返回一个正数值。
等待一段时间:编写延时循环
首先,了解一个ANSI C和C++库中的函数clock(),会返回程序开始执行后所用的系统时间。
但是,
clock,()返回的时间的单位不一定是秒;
其次,该函数返回类型在某些系统上可能是
long,在另一些系统上可能是
usigned long或者其他类型。
但是在头文件
ctime提供了这些问题的解决方案。
它定义了一个符号常量—“CLOCKS_PER_SEC”,该常量等于每秒钟包含的系统时间单位数。
而且,也将
clock_t作为
clock()返回类型的别名,这意味着可以将变量声明未
clock_t类型,编译器将把它转换为
long,
unsigned int或合适系统的其他类型。
//waiting.cpp -- using clock() in a time-delay loop #include<iostream> #include<ctime> //describes clock() funtion,clock_t type int main() { using namespace std; cout << "Enter the delay time,in seconds:"; float secs; (cin >> secs).get(); clock_t delay = secs*CLOCKS_PER_SEC; //convert to clock ticks cout << "starting\a\n"; clock_t start = clock(); while (clock() - start < delay) //wait until time elapses ; cout << "done \a\n"; cin.get(); return 0; }
相关文章推荐
- C++ Primer Plus 第五章笔记
- 《C++ Primer Plus(第六版)》(6)(第五章 循环和关系表达式 笔记)
- C++ Primer Plus 学习笔记 第五章 编程练习
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- 2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记
- C++ Primer Plus 学习笔记 第五章 01 for循环 递增运算符和递减运算符 复合语句,逗号运算符 C风格字符串比较、string类字符串比较
- 【学习笔记】C++primer plus 9.内存模型与名称空间
- C++ Primer Plus 第四章笔记
- C++ Primer Plus 笔记003
- 《C++ Primer Plus》第8章 函数探幽 学习笔记
- C++ Primer Plus学习:第五章 循环和关系表达式(2)
- 2012/1/14 《C++ Primer Plus》第六章:分支语句和逻辑操作符 学习笔记
- C++PrimerPlus第八章学习笔记——函数探幽
- 《C++ Primer Plus》14.4 类模板 学习笔记
- c++ primer plus 第五章编程练习
- C++ Primer Plus 第六版(中文版)课后编程题----第五章
- 【第五章】C++ Primer plus 的编程练习题(选取部分)
- C++ Primer Plus 学习笔记 第四章 04编程练习
- 《C++ Primer Plus》第7章 函数——C++的编程模块 学习笔记
- C++ primer plus笔记整理 04