标题: C语言for语句怎么转换成if句 [打印本页]

作者: ovov    时间: 2020-4-27 16:09
标题: C语言for语句怎么转换成if句
void delay(uint time)
{
        uint i,j;
        for(i=0;i<time;i++)
                for(j=0;j<100;j++);
}
怎么转换成if句实现相同的功能??


作者: 权威人物    时间: 2020-4-27 17:27
延时函数干嘛用if?,硬是要用暂时只能想到goto语句了,
作者: xxpp2011    时间: 2020-4-27 17:27
for是循环语句,if是条件语句,没听说过可以直接转换的,while倒是可以代替for
作者: ovov    时间: 2020-4-27 18:01
权威人物 发表于 2020-4-27 17:27
延时函数干嘛用if?,硬是要用暂时只能想到goto语句了,


萌新,萌新

作者: ovov    时间: 2020-4-27 18:02
xxpp2011 发表于 2020-4-27 17:27
for是循环语句,if是条件语句,没听说过可以直接转换的,while倒是可以代替for

能否改下让我参谋参谋
作者: xxpp2011    时间: 2020-4-27 18:22
//一级循环:
uchar j;
for(j=0;j<100;j++);
/*****************/
/*****************/
uchar j=0;
while(j<100)j++;

作者: xxpp2011    时间: 2020-4-27 18:32
本帖最后由 xxpp2011 于 2020-4-27 19:40 编辑

void delay(uint time)
{
        uint i=0,j=0;
        while(i<time)
        {                j=0;
                while(j<100)j++;
                i++;
        }
}

作者: miss999    时间: 2020-4-27 20:00
循环三个要素,初始值    循环条件    趋于循环结束的语句    if充当循环条件的判断  其他两个加上 你就能改成if形式 ,你品品,细品、
作者: Youth8023    时间: 2020-4-27 22:02
循环结构 和 判断结构是不同概念,把for改成while倒是可以
作者: 黄youhui    时间: 2020-4-27 22:05
  1. void delay(uint time)
  2. {
  3.   uint i;
复制代码






作者: jizi    时间: 2020-4-28 01:54
那用递归调用就行
本人不习惯用goto  
用goto更简单
unsigned char DelayTime
void delay(unsigned char temp)
{
    if(DelayTime == 0)
    {
        DelayTime = temp;
    }
    else
    {
        DelayTime --;
        if(DelayTime)
        {
            delay(0);
        }

    }

}
作者: 神蜂    时间: 2020-4-28 07:55
感谢楼主的提问。看到楼上凌晨1:54分的发帖,证明论坛的学习交流气氛很好。

作为一个从事电器行业工作了30年左右的60后,深刻的感受到,只有科技创新才能强国。

希望新的一代科技工作者,不要被教条主义束缚,要学好书本上人家的基础东西活用。

创新 创新 一定要创新。

希望能看到其他帖子。
作者: 64452198    时间: 2020-4-28 09:05
void delay(uint time)
{
        uint i,j;
  i=0;
   while(i<time)
  {
      i++;
     j=0;
    while(j<100)
      j++;
  }
  
}
作者: guan1989    时间: 2020-4-28 09:09
for循环是在这里执行循环函数,等待执行完成再去执行其他任务。下面是一个按键的判断函数,没有用for延时消抖,用的是if,没执行一次循环累加1,这样主循环的执行时间变短,适合按键延时特别多,后面又程序需要及时刷新的程序,当让也可以用中断。
                if(KEY[ucKey_num]==0)                  //按键1按下
                                        {
                                        keytime_Y[ucKey_num]++;        //按下消抖计时加1
                                        keytime_N[ucKey_num]=0;        //未按下消抖计时清零       
                                                if(keytime_Y[ucKey_num]>Const_Keysnake_time) //消抖滤波 ,受程序循环影响延时时间,需要程序完成后校准Const_Keysnake_time值
                                                {
                                                keytime_Y[ucKey_num]=0;         //按下消抖计时清零
                                                bitSet(key_value,ucKey_num+1);        //是否按下标志位
                                                }
                                        }
                        else            //按键1未按下
                                        {
                                        keytime_N[ucKey_num]++;                //未按下消抖计时加1
                                        keytime_Y[ucKey_num]=0;          //按下消抖计时清零
                                                if(keytime_N[ucKey_num]>Const_Keysnake_time)
                                                {
                                                keytime_N[ucKey_num]=0;
                                                bitClear(key_value,ucKey_num+1);
                                                }
                                        }
作者: 61867491    时间: 2020-4-28 09:29
一个循环 一个延时 根本就是2个东西
作者: shawncxl    时间: 2020-4-28 10:45
用loop语句实现循环,if语句判断是否跳出循环。if语句是不带有循环的哦。其实for语句里边的条件判断,也是if语句一样的功能,不过for语句集成了,使用起来更加简便了
作者: chenhongran    时间: 2020-4-28 11:12
循环结构和判断结构是不同的概念,for和while时循环结构的,不能跟判断结构if进行互换

作者: xianfajushi    时间: 2020-4-29 05:00



作者: lily加油    时间: 2020-4-29 12:41
把 for(i=0;i<time;i++)                 for(j=0;j<100;j++);换成
作者: lily加油    时间: 2020-4-29 12:44
i=0;j=0;while(i<time){{while(j<100)j++;}i++};
作者: 黄youhui    时间: 2020-4-29 13:21
黄youhui 发表于 2020-4-27 22:05

没写全,补充
void delay(uint time)
{
   uint i;   i = 0;
while(1)
{
i++;
if(i >= time)
brak;
else
;

}

}

作者: 天风情    时间: 2020-4-29 13:34
这个循环换成if不是更麻烦吗
作者: jiangyuwei    时间: 2020-4-29 14:01
if a=0; then b=1; else b=2; 判断语句,如果的意思。 if-else是判断语句,if(条件表达式,返回一个布尔型变量),如果是真,那就执行if后面的语句,并且跳过else后面的语句,要是返回假,则执行else里面的语句,if里面的语句就不会得到执行~
作者: f556    时间: 2020-4-29 15:01
for与while做空循环来延时是最直观简单的。天下大部分人都习惯这样,你如果真不喜欢for,喜欢if,可以用goto,可以用Timer+if来做。
作者: 892665341    时间: 2020-4-29 17:31
不行的 for是循环,你要用if的话 还是得用循环
作者: 凌某    时间: 2020-4-30 01:38
for和if,两个意思,用if和while可以实现

作者: ly1972001    时间: 2020-4-30 13:28
for也要用到判断,while更是如此,它们的内核就是if。在CODE中IF是最基本的指令,任何指令都可用它实现,只是看起来就没那么简明了。
改成IF的代码如下:
void delay(uint time)
{
        uint i=0,j;

        if(i<time)
        {
              i++;
              j=0;
              if(j<100)     j++;
        }
}
作者: 小毛z    时间: 2020-4-30 14:04
写time个if嵌套起来




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