++i和i++之间有什么区别?

在C语言中,使用++ii++之间有什么区别,在for循环的递增块中应该使用哪一个

  • ++i将递增i的值,然后返回递增的值

    i=1;
    j=++i;
    (i为2,j为2)
    
  • i++将增加i的值,但返回在增加之前保留的原始值

    i=1;
    j=i++;
    (i为2,j为1)
    

对于For循环,两种方法都可以++i似乎更为常见,可能是因为这正是K&R

在任何情况下,请遵循“首选++i而不是i++”的指导原则,这样您就不会出错

关于++ii++的效率,有一些评论。在任何非学生项目编译器中,都不会有性能差异。您可以通过查看生成的相同代码来验证这一点

效率问题很有趣。。。以下是我试图回答的问题:
在C中,i++和++i之间有性能差异吗

as @ on Frund注释,对于C++对象来说是不同的,因为运算符++()/Cuth>是一个函数,编译器不能知道如何优化临时对象的创建以保持中间值。

发表评论