-1

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

#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
4

2 回答 2

0

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。下一个输出可以类似地解释。干杯!

于 2013-09-21T23:44:17.413 回答
0

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

这一行:

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

变成:

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

虽然x+= (++a);成为

x += 16;  // x=78
于 2013-09-21T22:34:58.080 回答