C中i++和++i在for循环中无差别的疑惑

C语言中
do while 循环 中i++ 和++i的循环结果不一样,可以理解i++为先判断i的值,输出i+1的赋值

    do
    {
        printf("%d\n",i);
    }
    while(++i<10);
do
    {
        printf("%d\n",i);
    }
    while(i++<10);

两段输出分别为 :0 ~ 9 和 0 ~ 10

 for(i=0;i<10;i++)
    {
        printf("count is %d\n",i);
    }

无论是i++还是++i,其输出都是0~9
一直想不明白,这是为啥,求解答。

在for循环中,你可以认为它是等价的

int i = 0;
while( i < 10) {
      printf("%d", i);
      i++; // 这里是单独的一行,无论是i++/还是++i,这一行之后i的值都自增了。而在你上面的while循环中,i++和++i是要考虑判断后取值还是取值后判断
}

while(++i<10); 括号里是复合语句,拆分为:(++i, i < 10) i 先自加,再比较
while(i++<10); 括号里是复合语句,拆分为:(i++, i < 10) i 先比较,再自加
for(i=0;i<10;i++) 里 i++; 或 ++i; 是单独成句,++ 在前 或 在后没有区别。

在a=i++和a=++i里,因为涉及到对a赋值到底在i++之前还是之后,当然会有区别
而如果单独执行i++和++i当然就没有区别
while(i++)相当于while(a=i++),到底是先取值还是先赋值就跟++在前还是在后有关系
而for里的i++是个单独的语句

  • 这篇博客: for循环中i++和++i的对比 C语言中的 i++与++i的异同 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • for(i = 1, i < n, i++) VS for(i = 1, i < n, ++i),运算结果相同,运算时间不同。

    for循环中 i++与++ii++++i
    运算结果相同相同
    运算时间