码迷,mamicode.com
首页 > 其他好文 > 详细

练习4.17、4.18、4.19

时间:2018-08-08 13:42:37      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:根据   color   r++   cto   返回   假设   code   输出   span   

4.17:说明前置递增运算符和后置递增运算符的区别。

Ans:两者的作用对象都是左值运算对象,前者是将运算对象本身作为左值返回,就是将运算对象先递增再返回,后者是将运算对象的原始值的副本拷贝一份作为右值返回,实际上是先将运算对象返回,再让它递增。

4.18:如果132页那个输出vector对象元素的while循环使用前置递增运算符,将得到什么结果?

Ans:将会无法输出第一个vector对象元素,并且如果对象中没有在循环结束之前停止下来,那么循环结束时,pbeg会指向一个未定义的不可预知的位置。

4.19:假设ptr的类型是指向int类型的指针、vec的类型是vector<int>、ival的类型是int,说明下面的表达式是何含义?如果有表达式不正确,为什么?应该如何修改?

(a) ptr !=0 && *ptr++  (b) ival++ && ival

(c) vec[ival++] <=vec[ival]

Ans:a)如果ptr不为空,接着才去执行对ptr进行解引用,然后才让ptr递增。但是这根据不同的指针指向的情况,可能会出现未定义的结果,也可能能正常执行。

     b)&&的左边的值等于ival原始的值,而右边的值是ival+1后的值,只有当ival>0时整个表达式才为真。但是在同一个表达式中使用了一个对象并且还修改了它,然后在表达式的其他地方又使用了这个对象,是未定义的行为。应修改为ival&&ival+1

     c)不正确,在同一个表达式中使用了一个对象并且还修改了它,然后在表达式的其他地方又使用了这个对象,是未定义的行为。  

    应修改为:

1 vec[ival]<=vec[ival+1];

 

练习4.17、4.18、4.19

标签:根据   color   r++   cto   返回   假设   code   输出   span   

原文地址:https://www.cnblogs.com/Dark-King/p/9441859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!