004 自增自减

第四个例子 自增自减

 

形如 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--



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值