C语言 实在是想不通了

img


算的答案和给的不一样
算了好几次
实在是想不通了
会的帮讲解一下吧

do while,先执行一次循环体,y = y -x,y = 9; 然后执行一次条件,y = 9 < 0 的条件不成立,然后执行y--,最后y=8

首次循环,y-=x使得y=9,x++使得x=2,此时y大于0,所以循环结束 y--使得y=8

img

这里面有一个运算符优先级,虽然不影响答案,
执行一次do语句y=9,x=2;
这时在while中执行y--<0判断,是先判断y<0 还是先y--,显然--的优先级大于<
先y--后,y=8,再判断y<0,结果为false 结束循环 y=8。