C语言中前缀运算符++a与后缀运算符++a的区别

a++与++a在单独使用时与a=a+1等价,数值上二者也是一致的。

但是从实现上来说,a++会先创建一个a的副本,然后对a的值进行递增1,然后返回这个副本的值以实现对a原值的访问,其有一个拷贝的过程,时间和空间都需要。即为先读取a的值,再进行+1。

而++a没有创建副本的过程,直接递增1,然后使用a的值。即为直接进行+1操作,再读取a的值。因此,在循环中等一些情景,常用++a运算符在一定程度上可以提高效率。

例如:

int a = 5;
int b;
b = ++a;
printf("%d %d\n", a, b);

输出为a=6;b=6;

将++a改为a++,此时输出为a=6;b=5;

原理同样也可以推广到 --a与a-- 运算中

 (1)   如果用前缀运算符对一个变量增1(减1),则在将该变量增1(减1)后,用新值在表达式中进行其他的运算。
 (2)   如果用后缀运算符对一个变量增1(减1),则用该变量的原值在表达式中进行其他的运算后,再将该变量增1(减1)后。

例如:

	int a = 2, b, c;
	b = a--;
	c = --a;
	printf("b=%d, c=%d", b, c);

 输出为b=2;c=0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值