Chinaunix首页 | 论坛 | 博客
  • 博客访问: 542633
  • 博文数量: 252
  • 博客积分: 1068
  • 博客等级: 少尉
  • 技术积分: 1775
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-05 21:33
文章分类

全部博文(252)

文章存档

2013年(21)

2012年(231)

分类: C/C++

2013-03-04 15:07:43

//----------------------------------------------------------------------------------------------------------------------------------------------------

1.C++篇

unsigned char arr[N];

定义一个指针 unsigned char *p;

 p = arr[0];

判断数组arr[0]里面的内容来进行下一步操作,

用如下方法出错

   if(*p & 0x10 == 0x10)

     {

       1 ........

        }

       else

        {

        2........

          }

明明*p的值就是0x10,但是就是不进if里面去。

后来尝试了多种方法:

 方法一


if((*p) & 0x10 == 0x10)

     {

       1 ........

        }

       else

        {

        2........

          }

失败


 方法二

if((*p & 0x10) == 0x10)

     {

       1 ........

        }

       else

        {

        2........

          }

这样就近if里面了。好奇怪,等待自己收集整理这个资料

自我感觉是操作符的优先级的问题。


//----------------------------------------------------------------------------------------------------------------------------------------------------

第二篇---

在读串口是由于协议规定读出来是低位在前,高位在后;数据写入时却要求高位在前地位在后。

所以很不好操作,一不小心就漏了或者多交换了。

暂时的处理是按地址一个个交互,感觉效率很低。后面这个的算法等待优化!也希望大家看到的,能够帮我一起想想能不能有最好的方法。

#include
void Exchange(int *argA,int *argB);
int main()
{
  int a[2] = { 1,2 };
  int b[2] = {3,4 };      
  for(int i = 0;i<2;i++)
  {
      Exchange(a+i,b+i);
  }
  for(int j = 0;j<2;j++)
  {
  printf("a[%d] = %d,  b[%d] = %d",j,a[j],j,b[j]);
  if(j<=1)
  printf("\n");
  }
 
  return 0;
}
//----------------------------------------------------------------------
//exchange the value
void Exchange(int *argA,int *argB)
{
  int temp;
  temp = *argA ;
  *argA = *argB;
  *argB = temp;
}
//----------------------------------------------------------------------
//exchange the address



//----------------------------------------------------------------------



阅读(1184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~