你能解釋一下以下程序的輸出:輸出的程序((迷茫))
#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
爲什麼前置和後置的一個很好的例子增量並不總是一個好主意。運用前,後,incrments在seqence到a
初始淡水河谷(10)你
這條線:
int x=(a++)+(++a)+(a++)+(a++)+(++a);
變爲:
x = 10 + 12 + 12 + 13 + 15 // 62
雖然x+= (++a);
成爲
x += 16; // x=78
a ++增加了使用某個值後的值在使用其值之前,reas ++ 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。下一個輸出可類似進行解釋。乾杯!
[未定義的行爲和順序點]的可能重複(http://stackoverflow.com/questions/4176328/undefined-behavior-and-sequence-points) – delnan