标题: C语言while(--t);语句求解 [打印本页]

作者: mnx    时间: 2021-7-22 21:43
标题: C语言while(--t);语句求解
void delay(unsigned int t)
        {
                while(--t);
        }
这个语句里面while(--t)可与更改吗?可以换把--t换掉吗?如果可以应该怎么换?


作者: keifeng    时间: 2021-7-22 22:52
可以更换啊,这个里面就是延时,你可以更换成for(;t>0;t--);
作者: lkc8210    时间: 2021-7-22 23:34
当然可以换,但目的是什么?
作者: 地狱火    时间: 2021-7-23 00:05
可以换啊
作者: 夏日阳光    时间: 2021-7-23 08:30
--t的意思就是每循环一次,t值减少1
作者: sustlixin    时间: 2021-7-23 08:51
可以换
while(--t)一句程序里做了两件事,t自减1,并判断t是否大于0,
如果你想改,可以改成下面这样(供参考)
while(判定真假的条件)
[修改判定条件的内容]
作者: 晚安小宝贝丶    时间: 2021-7-23 13:33
--t即是t自减运算,while还进行是否大于0判断;可以进行对t赋初值,运用for语句来完成定时的延时,希望能够帮到你
作者: Leoon_Miss    时间: 2021-7-23 14:47
这个是使用while的循环延时才可以直接使用for循环完成
作者: dwb123    时间: 2021-7-23 18:42
这个完全可以直接改的,要换一起换。看系统时钟,比如1MHz,你把 t 变成1000,就相当于延迟1ms
作者: 442502587    时间: 2021-7-23 19:58
当然可以啊,但是你要做什么
作者: Hephaestus    时间: 2021-7-24 21:25
注意下你的代码只在C51下面可用,因为该编译器设计者认为用C51的都是不懂volatile这个关键字的傻孩子。换个编译器比如同样被小白们喊成Keil的RVMDK,楼主位代码会直接优化成t=0;因为t最后一定会等于0。现在的编译器比你想象的聪明太多了。
作者: 2627687547    时间: 2021-7-28 11:33
这是一个循环,看你具体想让他循环多久
作者: isyido    时间: 2021-7-28 12:33
这是基础语法啊!
作者: ouyangyang    时间: 2021-7-28 14:40
可以更改,可以用for循环语句
作者: 云雀在天    时间: 2021-7-28 20:57
void delay(uint i) {         while(i--);         }
作者: 云雀在天    时间: 2021-7-28 20:58
可以换成这样void delayms(unsigned int ms) {         unsigned char i=100,j;         for(;ms;ms--)         {                 while(--i)                 {                         j=10;                         while(--j);                 }         } }
作者: 云雀在天    时间: 2021-7-28 20:58
可以改成这样void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1