++i与i++的一点思考

        众所周知,++i与i++的功能几乎相同,最终都会达到给i进行递增的效果。两者的主要区别就是, i++ 返回原来的值,++i 返回加1后的值。

        通过百度,我找到了实现两者的源码。

++i

int &operator++()

{

*this += 1;

return *this;

}

i++

 int operator++(int)

{

int temp = *this;

++*this;

return temp;

}

 

        通过这些我们可以知道 i++返回的是i的值,而++i返回的是i+1的值。也就是++i是一个确定的值,是一个可修改的左值 。并且根据源码来看,++i更效率一点。

        但是,我不由得对++i在for语句中的使用生出了疑惑,人们通常在for语句中使用i++而不是++i,那么是否是因为两者返回值的不同而导致的呢?所以我写了一段测试代码。

int main()

{

int i=1;

for(;i<3;++i)

printf(“6\n”);

printf(“\n”);

for(i=1;i<3;i++)

printf(“6\n”);

return 0;

}

        如果两个for循环输出同样数量的6,那么++i与i++在for语句中就是同样的作用了。

 

 

显而易见,两者作用相同。所以人们经常使用i++是因为i++更符合人们的思维习惯咯。

最终结论:++i与i++在单独使用时效果一样,++i更有效率 。

(但与其他运算符混合使用时需要具体分析。)

posted @ 2020-06-01 22:55  陈先z  阅读(91)  评论(0编辑  收藏  举报