++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++ ”,你就不会出错。 
关于++i和i++的效率有++i评论。在任何非学生项目编译器中,都没有性能差异。您可以通过查看生成的代码来验证这一点,这些代码是相同的。 
效率问题很有意思...... 这是我尝试回答的问题: 在 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 。这里的价值i将被分配到j后i的 incremention i 。类似地, ++i将在j=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 。 
请不要担心哪一个更快的 “效率”(速度,真的)。这些天我们有编译器来处理这些事情。使用任何有意义的使用,在此基础上更清楚地显示您的意图。