打印

2位字符数组比较问题

[复制链接]
1977|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hw2008323|  楼主 | 2013-3-3 19:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hw2008323 于 2013-3-13 20:29 编辑

2位字符数组比较问题,char a[2],b[2]
例如a[0]=1;a[1]=2;    b[0]=1;b[1]=3;
我自己写的比较程序,总有问题,不管如何改变A和B的值,比较结果都是一样的,都是返回1.


cmp_start_and_stop_01//a>b返回1,a==b返回0,否则返回-1;
{                        
               if(a[0]>b[0])           {return 1;}        
                       ifa[0]==b[0])
                      {
                           if  (a[1]>b[1])                   {return 1;}
                           else        if(a[1]<b[1])          {return -1;}
                           else     if(a[1]==b[1])        {return 0;}
                       }               
                  else            return -1;
}
修改:其实我是从24C02里提取出4个数来2个2个的比较,数据内容是预先存的时间。例如:13:10分,和13:15分。
是一个检查存的时间是否符合一定的规则,一段代码。例如:13:10分小于13:15分。a[0]=13;a[1]=10比较b[0]=13;b[1]=15;

相关帖子

沙发
aozima| | 2013-3-3 21:42 | 只看该作者
单步

使用特权

评论回复
板凳
JerryWu75| | 2013-3-4 08:35 | 只看该作者
cmp_start_and_stop_01//a>b返回1,a==b返回0,否则返回-1;
{                        
               if(a[0]>b[0])           {return 1;}        
                       ifa[0]==b[0])
                       {
                            if  (a[1]>a[1])                   {return 1;}    这行错了吧!
                            else        if(a[1]<b[1])          {return -1;}
                            else     if(a[1]==b[1])        {return 0;}
                        }               
                  else            return -1;
}
另外你的比较大小的依据是什么,如果a[0]<b[0]但是a[1]>b[1]会是什么状态?
还有char在编译时会解析为unsigned还是signed?

使用特权

评论回复
地板
qiujiahong| | 2013-3-4 17:57 | 只看该作者
memcmp,strcmp!

使用特权

评论回复
5
sedatefire| | 2013-3-4 20:59 | 只看该作者
unsigned int cmp_start_and_stop_01(void)
{
        if (a[0]>b[0])
        {
                return 1;   /*返回值大于0*/
        }            

        if (a[0]==b[0])
        {
                if  (a[1]>a[1])                                   
                {
                        return 1;/* 永远不成立*/
                }
                else if (a[1]<b[1])
                {
                        return -1;
                }
                else if(a[1]==b[1])            
                {
                        return 0;                    /* 仅当a0==b0,且a1==b1的情况下成立*/
                }
                /*
               else{ ????  }
               没有返回值吗,程序编译报警了吧???
             */
        }                                 
        else
        {
                return -1;            /*这个返回的也是大于0 */
        }
}

使用特权

评论回复
6
sedatefire| | 2013-3-4 21:06 | 只看该作者
搞不清楚你想干嘛,比较数组差异吗?
sint_t  array_cmp(uint8_t  *a,  uint8_t *b,  uint_fast32_len)
{
     uint_fast32_t  i = 0;

     while ((i<len) && (a[i] == bi[i]))
     {
         i++;
     }
   
     if (i>=len)
     {
         i--;
     }
     return ((sint_t)a[i]-(sint_t)b[i]);
}

使用特权

评论回复
7
hw2008323|  楼主 | 2013-3-13 20:34 | 只看该作者
JerryWu75 发表于 2013-3-4 08:35
cmp_start_and_stop_01//a>b返回1,a==b返回0,否则返回-1;
{                        
               i ...

2位字符数组比较问题,char a[2],b[2]
例如a[0]=1;a[1]=2;    b[0]=1;b[1]=3;
我自己写的比较程序,总有问题,不管如何改变A和B的值,比较结果都是一样的,都是返回1.


cmp_start_and_stop_01//a>b返回1,a==b返回0,否则返回-1;
{                        
                if(a[0]>b[0])           {return 1;}        
                        ifa[0]==b[0])
                       {
                            if  (a[1]>b[1])                   {return 1;}
                            else        if(a[1]<b[1])          {return -1;}
                            else     if(a[1]==b[1])        {return 0;}
                        }               
                  else            return -1;
}
修改:其实我是从24C02里提取出4个数来2个2个的比较,数据内容是预先存的时间。例如:13:10分,和13:15分。
是一个检查存的时间是否符合一定的规则,一段代码。例如:13:10分小于13:15分。a[0]=13;a[1]=10比较b[0]=13;b[1]=15;

使用特权

评论回复
8
delin17| | 2013-3-13 20:55 | 只看该作者
自己单步跟一下,比在这问强百倍。

使用特权

评论回复
9
JerryWu75| | 2013-3-22 16:13 | 只看该作者
hw2008323 发表于 2013-3-13 20:34
2位字符数组比较问题,char a[2],b[2]
例如a[0]=1;a[1]=2;    b[0]=1;b[1]=3;
我自己写的比较程序,总 ...

函数cmp_start_and_stop_01的定义是什么,是void,char?

使用特权

评论回复
10
dqyubsh| | 2013-3-23 12:30 | 只看该作者
转换成16位的整数,再比较。复杂一点的写个结构,用memcmp比较。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝