找回密码
 立即注册
查看: 440|回复: 12

while (--k)什么时候结束?

[复制链接]
  • TA的每日心情
    开心
    2024-4-19 08:18
  • 签到天数: 95 天

    [LV.6]常住居民II

    34

    主题

    85

    回帖

    670

    积分

    高级会员

    积分
    670
    发表于 2023-11-21 19:23:14 | 显示全部楼层 |阅读模式
    哪位高手知道:
    int k = -1;

    while (--k);
    这个循环什么时候结束?
    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    6 小时前
  • 签到天数: 186 天

    [LV.7]常住居民III

    26

    主题

    900

    回帖

    2298

    积分

    金牌会员

    积分
    2298
    发表于 2023-11-21 20:47:26 | 显示全部楼层
    直接结束吧
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:11
  • 签到天数: 185 天

    [LV.7]常住居民III

    13

    主题

    244

    回帖

    951

    积分

    高级会员

    积分
    951
    发表于 2023-11-23 09:45:24 | 显示全部楼层
    建议仔细学懂C的相关知识。搞清楚操作符的优先级等特性。--ii和i--的区别就是一个先减1后再进行后续操作,另一个是先操作,后减1
    楼主加油!
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 10:11
  • 签到天数: 185 天

    [LV.7]常住居民III

    13

    主题

    244

    回帖

    951

    积分

    高级会员

    积分
    951
    发表于 2023-11-23 09:53:32 | 显示全部楼层
    本帖最后由 suncat0504 于 2023-11-23 09:54 编辑

    while的判断,只有遇到false的时候,才终止。0以外的数据都视为TRUE,所以你这个语句会一直执行下去,像陷入死循环一样,直到数据溢出变成0才结束吧。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-19 08:18
  • 签到天数: 95 天

    [LV.6]常住居民II

    34

    主题

    85

    回帖

    670

    积分

    高级会员

    积分
    670
     楼主| 发表于 2023-11-23 22:35:37 | 显示全部楼层
    suncat0504 说的非常正确,看看 stc-isp-v6.92G.exe 给出的软件延时函数,犯了非常低级的错误,到了这个版本还没有改正,大家看看这个函数能延时 20ms 吗?

    void Delay20ms(void)        //@11.0592MHz
    {
            unsigned char data i, j;

            i = 216;
            j = 37;
            do
            {
                    while (--j);
            } while (--i);
    }

    点评

    int 型的 -1 在内存 以补码形式存储 是0xffff 当它减到0 循环就结束了 --------------------------------------------------------------- ISP 的延时函数没问题。 应该是你的理解存在有误的地方  详情 回复 发表于 2023-11-24 08:33
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 19:03
  • 签到天数: 144 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2166

    积分

    荣誉版主

    积分
    2166
    发表于 2023-11-24 08:33:02 | 显示全部楼层
    liuyang21168 发表于 2023-11-23 22:35
    suncat0504 说的非常正确,看看 stc-isp-v6.92G.exe 给出的软件延时函数,犯了非常低级的错误,到了这个版 ...

    int 型的  -1 在内存  以补码形式存储   是0xffff
    当它减到0  循环就结束了
    ---------------------------------------------------------------
    ISP 的延时函数没问题。
    应该是你的理解存在有误的地方





    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    3 小时前
  • 签到天数: 182 天

    [LV.7]常住居民III

    5

    主题

    76

    回帖

    937

    积分

    高级会员

    积分
    937
    发表于 2023-11-24 09:15:02 | 显示全部楼层
    学习中
    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-19 08:18
  • 签到天数: 95 天

    [LV.6]常住居民II

    34

    主题

    85

    回帖

    670

    积分

    高级会员

    积分
    670
     楼主| 发表于 2023-11-24 20:19:09 | 显示全部楼层
    明白了,也就是说,第一次让 while(--j)循环37次,以后让 while(--j)循环255次。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 17:02
  • 签到天数: 131 天

    [LV.7]常住居民III

    11

    主题

    101

    回帖

    436

    积分

    中级会员

    积分
    436
    发表于 2023-12-3 09:53:47 来自手机 | 显示全部楼层
    数据为正执行,为负退出
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 19:32
  • 签到天数: 177 天

    [LV.7]常住居民III

    43

    主题

    369

    回帖

    1139

    积分

    金牌会员

    静坐常思己过,闲谈莫论人非

    积分
    1139
    发表于 2023-12-3 12:20:06 | 显示全部楼层
    根本一次循环都进不去,即使int k=1都进不去循环
    处事要代人所想,读书需切己用功
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-1 12:26 , Processed in 0.067956 second(s), 65 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表