-6

我想知道如何仅使用 IF、WHILE 或 FOR(没有 switch/case 语句)编写以下代码?

if(ulDataBuf!=15 && ulData==15)
{
  switch(ulDataBuf){
  case 14:
      timeON+=500000;
      break;
  case 13:
      if(timeON!=0) timeON-=500000;
      break;
  case 11:
      timeOFF+=500000;
      break;
  case 7:
      if(timeOFF!=0) timeOFF-=500000;
      break;
  }
}
4

3 回答 3

2

基本上用 if 语句替换第一种情况,用 if-else 语句替换其余情况。您将拥有如下结构:

if ( if(ulDataBuf!=15 && ulData==15) ) {
    if ( 14 == ulDataBuf ) {
        timeON+=500000;
    } else if ( 13 == ulDataBuf ) {
        if(timeON!=0) timeON-=500000;
    }
}

等等...

于 2013-10-27T23:18:30.533 回答
2
if(ulDataBuf!=15 && ulData==15)
{
    if(ulDatabuf == 14)
    {
        timeON+=500000;
    }
    else if(ulDatabuf == 13)
    {
        if(timeON!=0)
        {
            timeON-=500000; 
        }
    }
    else if(ulDatabuf == 11)
    {
        timeOFF+=500000;
    }
    else if(ulDatabuf == 7)
    {
        if(timeOFF!=0)
        {
        timeOFF-=500000;
        }
    }

}
于 2013-10-27T23:27:37.817 回答
0

以上答案完美地回答了您的问题-但我有自己的问题:您为什么要这样做?通常当编译的 switch 语句归结为汇编程序中的跳转表时,而多个 if-else 分支可以使生成的指令量增加。

于 2013-10-28T02:19:23.430 回答