当前位置:嗨网首页>书籍在线阅读

07-递增运算符(++)和递减运算符(−−)

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.1.5 递增运算符(++)和递减运算符(−−)

C++中有多个常被用在循环中的运算符,因此我们花一点时间来讨论它们。前面已经介绍了两个这样的运算符:递增运算符(++)(名称C++由此得到)和递减运算符(−−)。这两个运算符执行两种极其常见的循环操作:将循环计数加1或减1。然而,它们还有很多特点不为读者所知。这两个运算符都有两种变体。前缀(prefix)版本位于操作数前面,如++x;后缀(postfix)版本位于操作数后面,如x++。两个版本对操作数的影响是一样的,但是影响的时间不同。这就像对于钱包来说,清理草坪之前付钱和清理草坪之后付钱的最终结果是一样的,但支付钱的时间不同。程序清单 5.7演示递增运算符的这种差别。

程序清单5.7 plus_one.cpp

// plus_one.cpp -- the increment operator
#include <iostream>
int main()
{
    using std::cout;
    int a = 20;
    int b = 20;
    cout << "a = " << a << ": b = " << b << "\n";
    cout << "a++ = " << a++ << ": ++b = " << ++b << "\n";
    cout << "a = " << a << ": b = " << b << "\n";
    return 0;
}

下面是该程序的输出:

a = 20: b = 20
a++ = 20: ++b = 21
a = 21: b = 21

粗略地讲,a++意味着使用a的当前值计算表达式,然后将a的值加1;而++b的意思是先将b的值加1,然后使用新的值来计算表达式。例如,我们有下面这样的关系:

int x = 5;
int y = ++x; // change x, then assign to y
             // y is 6, x is 6
int z = 5;
int y = z++; // assign to y, then change z
             // y is 5, z is 6

递增和递减运算符是处理将值加减1这种常见任务的一种简约、方便的方法。

递增运算符和递减运算符都是漂亮的小型运算符,不过千万不要失去控制,在同一条语句对同一个值递增或递减多次。问题在于,规则“使用后修改”和“修改后使用”可能会变得模糊不清。也就是说,下面这条语句在不同的系统上将生成不同的结果:

x = 2 * x++ * (3 - ++x); // don’t do it except as an experiment

对这种语句,C++没有定义正确的行为。