找回密码
 立即注册
查看: 428|回复: 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的每日心情
    奋斗
    11 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    26

    主题

    810

    回帖

    2034

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    13

    主题

    244

    回帖

    891

    积分

    高级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    11 小时前
  • 签到天数: 170 天

    [LV.7]常住居民III

    13

    主题

    244

    回帖

    891

    积分

    高级会员

    积分
    891
    发表于 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的每日心情
    奋斗
    2024-5-5 08:35
  • 签到天数: 143 天

    [LV.7]常住居民III

    29

    主题

    558

    回帖

    2140

    积分

    荣誉版主

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

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





    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 167 天

    [LV.7]常住居民III

    5

    主题

    74

    回帖

    873

    积分

    高级会员

    积分
    873
    发表于 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的每日心情
    开心
    昨天 13:10
  • 签到天数: 126 天

    [LV.7]常住居民III

    11

    主题

    101

    回帖

    416

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    5 小时前
  • 签到天数: 167 天

    [LV.7]常住居民III

    43

    主题

    369

    回帖

    1099

    积分

    金牌会员

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-16 19:13 , Processed in 0.085442 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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