为什么codevision avr会忽略&#34中的一些陈述;如果"运营商?

时间:2014-11-11 14:49:46

标签: c++ if-statement switch-statement avr

现在它可以正常工作。嗯,当然这是我的错误,但如果没有你的一些问题就很难摆脱它。

   if ((key==11)^(key==13)^(key==16)^(key==17))   //this is the only 
                              // dirty hack style string needed to fix this
        {  
            switch (key)
                { 
                     case 11: { mode=0x01; break; }  //plus
                     case 13: { mode=0x02; break; }  //minus 
                     case 16: { mode=0x03; break; } //multiply
                     case 17: { mode=0x04; break; } //divide
                }  

            if (mode)
                {  
                      buffer=atof(display);  
                      firstop=1;  
                      first=1;   
                      redraw=1; 
                                      //and to delete the goto
                }   
        }

1 个答案:

答案 0 :(得分:0)

您永远不会重置模式,因此按一次将继续为任何其他键执行所选模式。

您在switch语句中没有定义默认语句

尝试使用编译器优化开关。如果它解决了您的问题,则可能是volatile问题,其中模式得到优化