本文已参与「新人创作礼」活动,一起开启掘金创作之路。
前言
你是否有这样的疑惑:为什么很多大佬在写循环的时候喜欢写++i而不是小白习惯上的i++? 这篇博客将带领你们探索其中的关键原因。
简介
我们知道,前置++为先将变量值加一,再使用,如:
int a=0,b;
b=++a;
printf("a=%d b=%d",a,b);
得到的结果为a=1 b=1 而后置++为先使用变量的值,再将变量加1,如:
int a=0,b;
b=a++;
printf("a=%d b=%d",a,b);
得到的结果为a=1 b=0
但事实上,i++和++i还有一个区别,那就是效率上的问题。
效率区分
相对官方的解释是这样的:
//来源:公众号【编程珠玑】地址:https://www.yanbinghu.com
class Test
{
public:
Test& operator++();//前置自增
const Test operator++(int);//后置自增
private:
int curPos; //当前位置
};
/*前置自增实现范式*/
Test& Test::operator++()
{
++curPos; //自增
return *this; //取值
}
/*后置自增实现范式,为了与前置区分开,多了一个int参数,但从来没用过*/
const Test Test::operator++(int)
{
Test tmp = *this; //取值
++curPos; //自增
return tmp;
}
基于以上i++是先取值后++,++i是++后取值,那么简化一下就是: ++i相当于下列代码
i += 1;
return i;
i++相当于下列代码
j = i;
i += 1;
return j;
可以看出,执行语句的数量上,++i少了一句,也就是存储i原先的值的这一句:j = i;
通过这样简单的介绍,相信大家已经对二者的效率区别有了一定的认识,如有疑问,欢迎评论区留言哦;
==//博主定期更新C语言相关知识供小白们提高自己的能力,欢迎关注哦。==