dandelian 发表于 2020-11-14 20:01:38

循环

#include<stdio.h>
int main()
{        int i,b,k=0;
        for(i=1;i<=5;i++)
        {b=i%2;
        while(b-->=0) k++;
        }
        printf("%d,%d",k,b);
}


求解

jackz007 发表于 2020-11-14 20:18:29

       说清楚,求解什么?

dandelian 发表于 2020-11-15 07:59:33

为什么输出是8 和 -2呢

dandelian 发表于 2020-11-15 08:00:15

jackz007 发表于 2020-11-14 20:18
说清楚,求解什么?

为什么输出是8和-2呢

风过无痕1989 发表于 2020-11-15 12:06:26

// 第1轮循环
// 执行 for (i = 1;i <= 5;i++) 后
i        1
b        -858993460
k        0

// 执行 b = i % 2; 后
i        1
b        1
k        0

// while (b-- >= 0) k++; 后
i        1
b        -2
k        2

// 第2轮循环
i        2
b        -2
k        3

// 第3轮循环
i        3
b        -2
k        5

// 第4轮循环
i        4
b        -2
k        6

// 第5轮循环
i        5
b        -2
k        8

重点:对于 b-->=0 这个表达式,在while的括号里面,所以是作为一个整体来对待的,他必须把这个整体计算完,才能决定下一步的工作。这个整体的计算就是,先计算 b>= 0 , 比如b = -1时,那么这个结果是 false ,就是 0,然后还必须再计算 b--,那么b就是 -2 了

dandelian 发表于 2020-11-15 13:22:44

风过无痕1989 发表于 2020-11-15 12:06
// 第1轮循环
// 执行 for (i = 1;i = 0) k++; 后
i        1


懂了懂了,谢谢!
页: [1]
查看完整版本: 循环