当前位置:  技术问答>linux和unix

if else多层嵌套发现中间某一次if else条件判断成立与失败分支同时执行

    来源: 互联网  发布时间:2017-05-30

    本文导语:  本人应用编程新手,根据开发需呀,需要自己写一个字符串解析函数,解析过程通过多层if-else嵌套来判断数据是否正确,但是 当多层嵌套,调试时出现bug,经gdb调试,发现其中一层的if-else(代码中红色标注),在程...

本人应用编程新手,根据开发需呀,需要自己写一个字符串解析函数,解析过程通过多层if-else嵌套来判断数据是否正确,但是
当多层嵌套,调试时出现bug,经gdb调试,发现其中一层的if-else(代码中红色标注),在程序执行时,if判断条件成功分支执行过以后,其对应的else语句也跟着执行,经过反复查看代码自己没有发现编写错误。故有点怀疑是否是if-else多层嵌套时,是否gcc存在BUG,造成编译错误,使条件分支失效。如果能指出是我代码编写错误引起的更好。
我用的是Ubuntu10.04,gcc版本为gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
现把代码精简处理如下:

#include 
#include 
#include 

#define HEADER_SYMBOL 0x5a

#define MAX_COMMAND_SIZE 44
//最小帧长度
#define MIN_FRAME_SIZE 20
//最大帧长度
#define MAX_FRAME_SIZE 204

int main(int argc, char *argv[])
{
char buf[44] = {HEADER_SYMBOL,HEADER_SYMBOL,0x7b,HEADER_SYMBOL,HEADER_SYMBOL,0x66};
int n , size;
int command_number = 0;
int max_command_number = 1;
int data_number = 0;
int max_data_number = 1;
char * buf_p = buf;
int ret = 1;
if(ret > 0){

n = sizeof(buf);
printf("sizeof(buf) = %dn", n);
if(n > 0){

while(buf_p - buf  MAX_FRAME_SIZE)||(size 

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • c/c++预处理命令预#if, #ifdef, #ifndef, #else, #elif, #endif介绍
  • 请教makefile中的 ifeq else default
  • 可否用&& ||完全替换bash中的if then else fi结构
  • sqlserver 存储过程中If Else的用法实例 iis7站长之家
  • 挺怪的!!好象是if和else的错误!!
  • jsp中if else的问题。请指点。给分!在线等待!!!
  • 操作系统实现中的 if else fork()
  • sqlserver 存储过程中If Else的用法实例
  • sql server 存储过程中If Else的用法举例
  • 有关if。。else在不同的web服务器上出错的问题?
  • sql server 存储过程使用 IF ELSE 的例子
  • Shell脚本if else语句小结
  • oracle if else语句使用介绍
  • linux shell中 if else以及大于、小于、等于逻辑表达式介绍
  • sql server中case when then else用法


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3