zoukankan      html  css  js  c++  java
  • 练习4.17、4.18、4.19

    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];
  • 相关阅读:
    [题解]北京2018
    [数据结构][字典树]Word Puzzles
    [数据结构][字典树]Hardwood Species
    [数学][广义欧拉定理]上帝与集合的正确用法
    Equal Sums
    Useful Decomposition
    网络流 EK算法
    线段树各类操作
    唯一分解定理
    Kuro and Walking Route
  • 原文地址:https://www.cnblogs.com/Dark-King/p/9441859.html
Copyright © 2011-2022 走看看