int i=10,j=10;
printf("%d %d",++i+j++, j--);
输出结果是 20, 10
执行逻辑是什么?怎么得出来的?
int i=10,j=10;
printf("%d %d",++i+j++, j--);
输出结果是 20, 10
执行逻辑是什么?怎么得出来的?
这个printf是用栈实现的,后面的j--先算输出10而j变成9,然后先将i+1再加上j,就是20,然后j再+1变成10
#include<bits/stdc++.h>
using namespace std;
int i,j;
int main(){
i=j=10;
printf("%d %d %d\n",++i+j++,i,j);
i=j=10;
printf("%d %d %d\n",++i+j++,i,j+=2);
i=j=10;
printf("%d ",++i+j++);//分开输出
printf("%d ",i);
printf("%d ",j);
return 0;
}
输出结果:
21 10 10
23 10 12
21 11 11
这样很明显,printf是从后向前执行的