c语言 – ++ i和i ++有什么区别?

在C中,使用++i和之间有什么区别i++,哪些应该在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中使用的

在任何情况下,遵循准则“宁可++ii++”,你会不会出问题。

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

效率问题很有意思……这是我尝试回答的问题: C ++中的i ++和++ i之间是否存在性能差异?

正如On 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。这里的值iji 增加之后分配给i。同样++i将在之前执行j=i;

对于你的问题 应该在for循环的增量块中使用?答案是,你可以使用任何一个..没关系。它将执行你的for循环相同的no。时代

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


请不要担心哪一个更快的“效率”(速度,真的)。这些天我们有编译器来处理这些事情。使用任何有意义的使用,在此基础上更清楚地显示您的意图。


++i 递增值,然后返回它。

i++ 返回值,然后递增它。

这是一个微妙的差异。

对于for循环,请使用++i,因为它稍快一些。i++将创建一个额外的副本,只是被扔掉。

添加评论

友情链接:蝴蝶教程