求解答疑问,求解答,要十个字符

写题的时候碰到的疑问

int main()

{
    int i,b,k=0;
    for(i=1;i<=5;i++)
    {
        b=i%2;
        while(b--==0)k++;
    }
    printf("%d,%d,%d",k,b,i);
    return 0;
}

为什么k的值是2呢?i=1,3,5的时候k不应该都自加一次变成3吗?求解

while(b--==0)
是判断完b==0后,b才减去1
所以i为偶数时,k++才执行。因此只有i=2和4的时候k加了1,最终为2

b--是先判断后自减的,应该是在 i = 2,4的时候 k++ 了两次,所以是2.
i = 2,b = 0,while(b--==0) 的判断顺序是 先判断 b == 0,成立,然后 b-- 变成 -1