您的位置:首页 > 编程语言 > C语言/C++

2012/1/13 《C++ Primer Plus》第五章:循环和表达式 学习笔记

2012-01-14 17:09 323 查看
《C++ Primer Plus》第五章学习笔记
57:C++表达式是值或值与操作符的组合,每个C++表达式都有值。

58:++x; x++;这两条语句作用效果相同。对于内置类型,不会有差别。但是对于类而言,前缀将值加一,返回;后缀先复制一个拷贝,将原值加一,返回拷贝。所以前缀比后缀效率更高。

59:前缀递增、前缀递减和“*”操作符优先级相同,以从右到左的方式进行结合。后缀递增和后缀递减的优先级相同,但比前缀操作符的优先级高,这两个操作符以从左到右的方式进行结合。

60:如果在语句块定义了一个新的变量,则仅当程序执行该语句块的语句时,该变量才存在。如果语句块定义了一个外部语句块中已存在的变量,则新变量暂时代替旧变量。

61:逗号表达式:

1、最常见用途是将两个或更多的表达式放到一个for循环表达式中。

2、它确保先计算第一个表达式,然后计算第二个表达式,比如i = 20 , j = 2* i // i==20,j==40

3、逗号表达式的值是第二部分的值。

62:六种关系表达式,不能用于C风格字符串比较。比如,char word[] = “mate”; word == “mate”,错误,==左右两端都是地址,地址显然不同。(用strcmp())

63:While循环可以用于让程序等待一段时间,以达到某种目的,比如用来控制时间的小程序:

#include <iostream>

#include <ctime>

int main()

{

using namespace std;

cout << "Enter the delay time, in second : ";

double sec;

cin >> sec; //个人理解:

clock_t delay = sec * CLOCKS_PER_SEC; //一共要经历的时钟周期数,CLOCKS_PER_SEC为符号常量

cout << "starting\a\n";

clock_t start = clock(); //当前计算机的时钟周期数

while(clock()-start < delay);

cout << "Done\a\n";

return 0;

}

64:C++为类型建立别名的方式有两种。

一种是使用预处理器:#define BYTE char ;

第二种使用typedef,比如typedef char byte。

对于第一种方式,如果有:#define fp float *; fp pa,pb; 则预处理器置换改声明为:float * pa,pb,所以pa为指针,pb仅为float变量。所以typedef是更好的选择。

65:For循环中的空测试条件被视为true。

66:读取char值时,与读取其他基本类型一样,cin将忽略空格和换行符。(可以用cin.get(char)补救,其参数类型为引用&)。

67:当cin出现在需要bool值的地方(如在while循环的测试条件中),cin将被一个转换函数转换成bool值。如果最后一次读取成功了,则转换为true;否则为false。

68:如果用char* a = “abcde”;则不能通过a和下标索引来修改字符串的值,是不是因为此时”abcde”存储在内存中的常量存储区,所以不能修改?

书中的错误:

P115 文字第一行”ios:boolalpha”少一个冒号;

P121根据英文版,文字第二段的“现”应改为“先”;

P125最下面第三个for循环多了一个括号;

P127 5.2.2文字第三段第五行”strcpm()”;

P129 这个程序没印完整;

P135倒数第二行while前面漏了个{;

P144最后一行的25和cities应交换;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: