if else配对以及格式问题

工作中写过这样一段代码:
                if((dev.protocal&0xf0)>=0x30)------------------------------------------------------------------条件A
                    if(uart2plc_auto_flood(trace,(my_u8 *)(&seq_n),0x02,F1))---------------------------条件B,动作1
                        return 0;--------------------------------------------------------------------------------------动作2
                else 
                      if(uart2plc_auto_route(trace,0x02,F1))--------------------------------------------------条件C,动作3
                          return 0;-------------------------------------------------------------------------------------动作4
为了代码好看,就没有加花括号同时对于每一个if没有添加它对应的else语句。本意是条件A不满足就执行就执行动作3,而事实上当条件A不满足时,就什么事情也不干了。究其原因在于,if和else的配对上边。if else配对是从下向上配对,从else向if配对,如果没有找到else只有if那么就忽略这个else部分。遵循这一原则,上边代码中的else和条件B进行了配对,所有代码都属于条件A的控制范围,因此不能够正常执行。

结论:在书写if else构成的代码时都应该统一的加花括弧,同时对于每一个if条件应该都有自己的else条件,就算是空也必须留出那段空代码段。
上边代码的正确书写格式为:
                if((dev.protocal&0xf0)>=0x30)
                {  
                   if(uart2plc_auto_flood(trace,(my_u8 *)(&seq_n),0x02,F1))
                   {  
                     return 0;
                   }else 
                   {}
                }else 
                {
                   if(uart2plc_auto_route(trace,0x02,F1))
                    { 
                      return 0;
                    }else
                   {}
                } 

你可能感兴趣的:(程序设计)