【共读Primer】25.<4.5>递增和递减运算符 Page131

递增:++       使用方法为  i++;或 ++i;   等价于 i = i + 1;

递减:--        使用方法为  i--;或 --i;   等价于 i = i - 1;

前加和后加的区别在于是否是叠加后的值参与整体运算

int i =0,j;
j = ++i;  // j = 1, i = 1; 前置版本的到底增之后的值    
j = i++;  // j = 1, i = 2; 后置版本得到递增之前的值

前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

如非必要尽量使用前置版本,因为后置版本会产生一个临时的变量。

auto pbeg = v.begin();
// 输出元素之至遇到第一个负数为止
while(pbeg !=v.end() && *beg >= 0)
    cout << *pbeg++ << endl; // 输出当前值并将pbeg向前移动一个元素

上面的这种写法是一种简介的写法,

它的意义是在一条语句中,使用迭代器的值,并将迭代器向后移动一位

参与运算的对象的求值顺序在C++标准中没有明确规定,所以不要将臆测的运算顺序带入代码中,这样的结果将是不可预测的

for(auto it=s.begin();it!=s.end()&& !isspace(*it);++it)
    *it=toupper(*it);


// 以下是错误的循环示范
// 产生问题的原因是赋值的左右两侧都用到了beg对象,并且两册都改变了beg的值
while(beg!=s.end() && !isspace(*beg))
    *beg = toupper(*beg++);  // 该语句的结果是未定义的


*beg= toupper(*beg);           // 先求左侧的值
*(beg +1) = toupper(*beg);  // 先求右侧的值

猜你喜欢

转载自www.cnblogs.com/ChattyKu/p/9499878.html