写题的时候碰到的疑问
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