将语句切换到IF / while

时间:2013-10-27 23:05:45

标签: c++ c

我想知道如何只用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;
  }
}

3 个答案:

答案 0 :(得分:2)

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

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

等等......

答案 1 :(得分: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;
        }
    }

}

答案 2 :(得分:0)

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