全部博文(252)
分类: 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
//----------------------------------------------------------------------