《C++Primer Plus》学习笔记(四)

来源:互联网 发布:淘宝网企业店铺靠谱吗 编辑:程序博客网 时间:2024/06/12 01:08

1、递增和递减操作符

同一条语句对同一个值不要使用多次的递增递减操作。

如:x = 2*x++ *(3 - ++x); 在不同的操作系统中将产生不同的结果(规则“修改后使用”和“使用后修改”可能变得模糊不清)。


2、副作用点跟顺序点

副作用点(side effect):指的是就算表达式时对某些东西(如存储在变量中的值)进行了修改

顺序点(sequence point):是程序执行过程中的一个点,在这里,进入下一步之前将确保对所有的副作用都进行了评估。语句中的分号就是一个顺序点。任何完整的表达式末尾都是一个顺序点。

再看上述的例子,表达式2*x++不是一个完整表达式,因此,C++不保证x的值在计算2*x++后立刻加1。由于整条语句是一个表达式,所以,执行完这条语句后,x加了2。


3、前缀格式和后缀格式

前缀格式(++n)和后缀格式(n++),在执行速度上,前缀格式的效率更高。因为前缀函数将值加1,然后返回;但是后缀首先复制一个拷贝,将其加1,然后将复制的拷贝返回。


4、递增递减操作符和指针

1、前缀递增、前缀递减和引用解除操作符*的优先级相同,采用右结合

2、后缀递增和后缀递减的优先级相同,比前缀操作符的优先级更高,采用左结合

如: doubel arr[5] = { 21.1, 32.8, 23.4, 45.2, 37.4};

Double *pt = arr;

++ pt; //pt point to arr[1], 32.8

*++pt  //   == *(++pt)   point to arr[2]   23.4

++ *pt  //  == ++(*pt)       point to arr[2]   24.4

(*pt)++  //      point to arr[2]   25.4

*pt++ //  == *(pt++)   point to arr[2]   25.4  但是执行完这句语句后,pt的值将为arr[3]的地址。


5、逗号操作符

所有操作符中,逗号操作符的优先级最低。

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

Data = 17, 240; 被解释为: (Data = 17 ),240; 所以, Data = 240;


6、逐字节读取文本输入

若ch 为char变量,则:

cin >> ch; //忽略空格、换行、制表符

cin.get( ch ); //不管字符是什么,都存储到ch,而且返回输入字符

              ch = cin.get( );  
原创粉丝点击