当在C中用作for循环中的条件的一部分时,增量运算符究竟是何时应用的?

当在C中用作for循环中的条件的一部分时,增量运算符究竟是何时应用的?,c,for-loop,C,For Loop,我想知道为什么我的输出在控制台上是1到10 #include <stdio.h> #include <stdlib.h> int main(void){ int i = 0; for (;i++ <10;) { printf("%d\n", i); } } #包括 #包括 内部主(空){ int i=0; 对于(;i++发生这种情况的原因是,在i++的情况下,在i++表达式的值计算之后,增量作为副作用发生,因为在i++的

我想知道为什么我的输出在控制台上是1到10

#include <stdio.h>
#include <stdlib.h>

int main(void){
  int i = 0;
    for (;i++ <10;) 
  {
          printf("%d\n", i);
  }
}
#包括
#包括
内部主(空){
int i=0;


对于(;i++发生这种情况的原因是,在
i++
的情况下,在
i++表达式的值计算之后,增量作为副作用发生,因为在
i++
的情况下,增量作为副作用
i++表达式的值计算之后发生
i++
有什么作用?你能很清楚地解释一下,你对这个操作符和for循环的假设,这会导致你期望项目#1打印0吗?请编辑这个问题。不要在评论中。你为什么要写这样的代码?当你不得不发布一个关于代码作用的问题时,会有一些错误。因为你可以编写混乱的代码,但这并不意味着它是聪明的代码。聪明的代码就是糟糕的代码。
(;i@Andrew.这看起来像是对语言结构的一个基本误解,而不是一种尝试性的聪明。可能两者都有。
i++
做了什么?你能很清楚地解释一下你对这个运算符和for循环的假设吗?这会导致你期望项目#1打印0?请编辑问题。不要在评论中。你为什么要ant想写这样的代码吗?当你不得不发布一个关于代码功能的问题时,就会出现一些问题。仅仅因为你能写令人困惑的代码并不意味着它是聪明的代码。聪明的代码就是糟糕的代码。
(;i@Andrew.这看起来像是对语言结构的根本误解,而不是试图聪明。两者都可能。虽然你的陈述显然是正确的,但鉴于问题中的第#1项,我认为这对OP没有多大帮助。@MadPhysicast这是怎么回事?OP似乎知道运算符在陈述之后工作,但似乎是这样的nk,循环完成后,它将遵循。注意循环定义中省略的最后一部分。感谢你试图弄清这位疯狂物理学家的底细。如果你觉得这个答案有帮助,或多或少,因为它证实了我从观察中得出的假设。它引用了权威来源,并直接回答了我关于何时mparison发生,当
i
的值实际增加时(似乎只要循环体开始,而不是在比较中,就会立即增加)@Jonathan-增量实际上是作为比较表达式的一部分发生的。只是
i++
增量并使用旧值,而
++i
增量并使用新值。虽然你的陈述显然是正确的,但鉴于问题中的第#1项,我认为这不会对OP有多大帮助。@MadPhysician那?OP似乎知道运算符在语句之后工作,但似乎认为它在循环完成之后才工作。注意循环定义中省略的最后一部分。感谢你试图弄清这位疯狂物理学家的底细。如果你发现这个答案或多或少有帮助,因为它证实了我根据观察得出的假设。它是r参考权威来源并直接回答我的问题,即何时进行比较以及何时实际增加
i
的值(似乎只要循环体开始,而不是在比较中开始)@Jonathan-增量实际上是比较表达式的一部分。只是
i++
增量并使用旧值,而
++i
增量并使用新值。
for ( clause-1 ; expression-2 ; expression-3 ) statement