您能解释一下以下程序的输出:
#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
答案 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.下一个输出可以类似地解释。干杯!