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

在C中,使用++ii++什么区别,哪些应该用在for循环的增量块中?


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

     i = 1;
     j = ++i;
     (i is 2, j is 2)
    
  • i++将增加的价值i ,而是返回原来的价值i递增之前举行。

     i = 1;
     j = i++;
     (i is 2, j is 1)
    
  • 对于for循环来说,可以工作。 ++i似乎更常见,也许是因为这是K&R中使用的。

    在任何情况下,请遵循指导原则“prefer ++i over i++ ”,并且不会出错。

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

    效率问题很有趣...这是我的答案:在C中,i ++和++ i之间有性能差异吗?

    正如Freund所指出的那样,对于C ++对象来说它是不同的,因为operator++()是一个函数,编译器无法知道如何优化临时对象的创建以保存中间值。


    i ++被称为Post Increment,++ i被称为Pre Increment。

    i++

    i++是后增量,因为它在操作结束后将i的值增加1。

    让我们看看下面的例子:

    int i = 1, j;
    j = i++;
    

    这里j = 1值,但是i = 2 。 在这里, i价值将被分配给j然后i会增加。

    ++i

    ++i是预先增量,因为它在操作之前将i的值增加1。 它意味着j = i; 将在i++之后执行。

    让我们看看下面的例子:

    int i = 1, j;
    j = ++i;
    

    这里j = 2值,但是i = 2 。 这里的价值i将被分配到ji的incremention i 。 同样++i会在j=i;之前执行j=i;

    对于你应该在for循环的增量块中使用的问题 答案是,你可以使用任何一个..无所谓。 它会执行你的for循环相同的号码。 的时代。

    for(i=0; i<5; i++)
       printf("%d ",i);
    

    for(i=0; i<5; ++i)
       printf("%d ",i);
    

    两个循环都会产生相同的输出。 即0 1 2 3 4

    它只在你使用它的地方很重要。

    for(i = 0; i<5;)
        printf("%d ",++i);
    

    在这种情况下,输出将是1 2 3 4 5


    请不要担心速度更快的“效率”(速度,真的)。 我们现在有编译器负责这些事情。 使用任何一个有意义的使用,基于此更清楚地表明你的意图。

    链接地址: http://www.djcxy.com/p/12529.html

    上一篇: What is the difference between ++i and i++?

    下一篇: What does the constant 0.0039215689 represent?