问题描述:
#include<iostream>
using namespace std;
int main()
{
int i,j,m,n;
i=8;
j=10;
m=++i+j++;
n=(++i)+(++j)+m;
cout<<i<<'\t'<<j<<'\t'<<m<<'\t'<<n<<endl;
return 0;
}
为什么输出的是 10 12 19 41啊?
我怎么算的是 8 10 19 39额?
问题解答:
这样子的
m=++i+j++; // 这里i自增1,变成9;j同样,为11;对m,因为i是前自增返回的是9,而j后自增,返回10,所以m为19
n=(++i)+(++j)+m; //同上,i为10;j为12;m不变;n为41
m=++i+j++; i=9,j=10但此时m的值为19;因为++i是用的自加之后的值,而i++用的是自加之前的值!!!
++ 放在变量前面是变量自加之后再参与运算,放在变量后面是参与运算之后再自加,自加运算对变量本身也起作用的