Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
';在任何情况下,请遵循指南;首选++;i超过i++&引用;你赢了';不要出错;在C语言中,这背后的原因是什么?_C_Post Increment_Pre Increment - Fatal编程技术网

';在任何情况下,请遵循指南;首选++;i超过i++&引用;你赢了';不要出错;在C语言中,这背后的原因是什么?

';在任何情况下,请遵循指南;首选++;i超过i++&引用;你赢了';不要出错;在C语言中,这背后的原因是什么?,c,post-increment,pre-increment,C,Post Increment,Pre Increment,我已经找到了这个问题的答案。在其中一行中,作者提到: 在任何情况下,请遵循“首选++i而不是i++”的指导原则,这样您就不会出错 我知道++I比I++稍微快一点,但我认为他们没有理由出错。我找了一会儿,我能找到的最接近的是。它清楚地解释了为什么它更喜欢使用++i,但仍然没有解释为什么使用i++会出错 那么谁能告诉我i++怎么会出错呢 注意:我的问题不是骗人的,因为我不是在问性能问题。我已经看到了这个问题。我在问,我在上面提到的答案中提到的I++怎么可能是错误的。在 for (i=start; i

我已经找到了这个问题的答案。在其中一行中,作者提到:

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

我知道
++I
I++
稍微快一点,但我认为他们没有理由出错。我找了一会儿,我能找到的最接近的是。它清楚地解释了为什么它更喜欢使用
++i
,但仍然没有解释为什么使用
i++
会出错

那么谁能告诉我
i++
怎么会出错呢

注意:我的问题不是骗人的,因为我不是在问性能问题。我已经看到了这个问题。我在问,我在上面提到的答案中提到的
I++
怎么可能是错误的。

for (i=start; i<end; i++)

其中旧的count值成为要存储内容的新插槽的索引

另一方面,如果需要增量后的值,请使用
++i

请注意,对于整数类型,以下各项完全等效:

  • i+=1
  • ++i
  • i+++1
同样,以下各项也是等效的:

  • (i+=1)-1
  • i++
  • ++i-1
对于浮点和指针,它更复杂


就任何客观原因而言,你找到的建议都是胡说八道。另一方面,如果你觉得
++i
更容易推理,那么请随意采纳建议,但这完全取决于个人和你的习惯。

这不是“稍微快一点”;任何告诉你这一点的人都不知道他们在说什么。@AshishAhuja虽然历史上存在微小的性能差异,但现代编译器非常擅长发现和消除死代码,如果这真的是一个问题,我会感到惊讶。@AshishAhuja:这种说法是错误的。“存储旧的值”是不存在的。一般来说,“++i是更快”的神话起源于C++,有时它是真的,因为语言具有操作符重载。code>array[++i]相当于
(array+1)[i++]
,后者同样可以并行完成。你消除了我所有的疑虑。你的意思是说@MarkHarrison是错的,实际上
i++
++i
之间没有区别吗?@AshishAhuja这个答案与我在链接副本中发布的答案几乎相同。
for (i=start; i<end; ++i)
index = count++;
array[count++] = val;