`
hyshucom
  • 浏览: 806170 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

1、递增和递减操作符

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

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


2、副作用点跟顺序点

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

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

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


3、前缀格式和后缀格式

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


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

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

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

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

Double*pt=arr;

++pt;//ptpointtoarr[1],32.8

*++pt//==*(++pt)pointtoarr[2]23.4

++*pt//==++(*pt)pointtoarr[2]24.4

(*pt)++// pointtoarr[2]25.4

*pt++//==*(pt++) pointtoarr[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();
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics