您能否解释以下程序的输出:
#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
您能否解释以下程序的输出:
#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
a++ 在使用 a 的值之后增加了 a 的值,而 ++a 在使用它的值之前增加了值。所以在int x = x=(a++)+(++a)+(a++)+(a++)+(++a);
第一个 a++ 将使用值 10 并将 a 的值增加到 11,现在下一个 ++a 将 a 的值从 11 增加到值 12 然后使用它。所以它变成:
x = 10 + 12 + 12 + 13 + 15 = 62
并且此时x的值为15。下一个输出可以类似地解释。干杯!
一个很好的例子,说明为什么前增量和后增量并不总是一个好主意。将前后增量依次应用于a
(10) 的初始值,您将得到
这一行:
int x=(a++)+(++a)+(a++)+(a++)+(++a);
变成:
x = 10 + 12 + 12 + 13 + 15 // 62
虽然x+= (++a);
成为
x += 16; // x=78