第四个例子 自增自减
形如 i++, i-- 或 ++i 、 --i
#include<stdio h="">
void main()
{
int i,j,k;
int m,n,p;
i = 8;
j = 10;
k = 12;
m = ++i;
printf("i=%d\n",i);
printf("m=%d\n",m);
n = j--;
printf("j=%d\n",j);
printf("n=%d\n",n);
p= (++m)*(n++)+(--k);
printf("k=%d\n",k);
printf("p=%d\n",p);
}
</stdio>
变量的赋值部分
movl $8, -4(%ebp) ## i = 8 movl $10, -8(%ebp) ## j = 10 movl $12, -12(%ebp) ## k = 12
m= ++i;
leal -4(%ebp), %eax ## eax = &i incl (%eax) ## ++i movl -4(%ebp), %eax ## eax=i movl %eax, -16(%ebp) ## m=i
n = -- j
movl -8(%ebp), %eax ## eax=j movl %eax, -20(%ebp)## n=j leal -8(%ebp), %eax ## eax =&j decl (%eax) ## j--
p= (++m)*(n++)+(--k);
leal -16(%ebp), %eax ## eax = &m incl (%eax) ## m++ movl -20(%ebp), %eax ## eax = n movl %eax, %edx ## edx =n imull -16(%ebp), %edx ## edx=m*n leal -12(%ebp), %eax ## eax = &k decl (%eax) ## --k movl %edx, %eax ## eax =edx addl -12(%ebp), %eax ## (++m)*n+(--k) movl %eax, -24(%ebp) leal -20(%ebp), %eax ## n incl (%eax) ## n--