while结构中的自增自减怎么算

int i=5;while (i++≤7) ++i;printf("%d",i)结果为什么是十?

运算优先级,i++里的++操作比比较操作低,所以先进行i<=7的比较,再执行++
同时,由于判断条件里有++,循环体里还有++,所以每次循环i自增2次
i初始值是5,当它变成9,不满足循环条件之后,i再次++就变成10了

运行过程应该是:
第一次判断:i++<=7,先判断i<=7成立,然后运行i++为6,再运行++i为7;
第二次判断:i=7成立,然后运行i++为8,再运行++i为9;
然后第三次判断,i=9判断不成立,但是还会运行i++,为10,输出

++i先自增再运算
i++先运算再自增
i++<=7:就是先判断i<=7,i再自增
第一次循环:判断5<=7成立,i再自增此时i=6,再进行++i,此时i=7
第二次循环:判断7<=7成立,i再自增此时i=8,再进行++i,此时i=9
第二次循环:判断9<=7不成立,i再自增此时i=10,最后输出i=10

简单来说 就是++在前 先加后计算,++在后,先计算后加
具体分析如下所示

① 初始时,i=5,i++=5<=7 条件成立 进入while循环体  此时i=6,
②执行++i,此时i=7
③i++=7<=7 条件成立 进入while循环体 此时i=8
④执行++i语句后,此时i=9
⑤注意: 此时还会进行一次循环条件的判断,即i++=9>7 循环条件不成立 结束循环,此时i=10,因此最终结果就为10