程序输出((困惑))

时间:2013-09-21 22:28:11

标签: post-increment pre-increment

您能解释一下以下程序的输出:

#include <iostream>
using namespace std;

int main() 
{  
    int a=10;

    int x=(a++)+(++a)+(a++)+(a++)+(++a);

    cout<<x<<endl;
    x+= (++a);

    cout<<x<<" "<<a<<endl;
}

输出是:

62

78 16

2 个答案:

答案 0 :(得分:0)

一个很好的例子说明为什么前后增量并不总是一个好主意。将先前和后期的收入应用于a(10)的初始值,您将获得

这一行:

int x=(a++)+(++a)+(a++)+(a++)+(++a);

变为:

x = 10 + 12 + 12 + 13 + 15 // 62

x+= (++a);成为

x += 16;  // x=78

答案 1 :(得分:0)

a ++使用a的值增加a的值,而++ a在使用其值之前增加该值。 所以在int x = x=(a++)+(++a)+(a++)+(a++)+(++a);中,第一个++将使用值10并将a的值增加到11,现在下一个,++ a,将a的值从11增加到值12,然后使用它。 所以它变成了:

x = 10 + 12 + 12 + 13 + 15 = 62

并且此时x的值为15.下一个输出可以类似地解释。干杯!

相关问题