4.17说明前置递增运算符和后置递增运算符的区别。
前置:自增后返回自增的结果,不保留自增前的值。
后置:自增后返回自增前的结果。
4.18如果P132那个输出vector对象元素的while循环使用前置递增运算符,将得到什么结果?
auto pbeg = v.begin();
while(pbeg != v.end() && *pbeg >=0)
cout << *pbeg++ << endl;
改为前置后输出的第一个值实际上是vector的第二个值,在输出最后一个值时会造成索引越界。
4.19假设ptr的类型是指向int的指针、vec的类型是vector < int >、ival的类型是int,说明下面的表达式是何含义?如果有表达式不正确,为什么?应如何修改?
ptr != 0 && *ptr++;//解引用当前指针,值不为0则为true
ival++ && ival;//返回false
vec[ival++] <= vec[ival];//返回true