当前位置: 技术问答>linux和unix
怎么实现我要得功能??
来源: 互联网 发布时间:2015-03-19
本文导语: #include "stdio.h" static char recvflag[1]; int recv1(char recvflag[1]); main() { int t; int ret; recvflag[0]=0xFF; for(t=0;t1; } 找到recvflag[0]中为1的数据位。找到数据位后,把找到的数据位赋成0。 如果8位都是零的话,把八位都强制赋...
#include "stdio.h"
static char recvflag[1];
int recv1(char recvflag[1]);
main()
{
int t;
int ret;
recvflag[0]=0xFF;
for(t=0;t1;
}
找到recvflag[0]中为1的数据位。找到数据位后,把找到的数据位赋成0。
如果8位都是零的话,把八位都强制赋为1。
现在地问题是每次调用int recv1(char recvflag[1])时,recvflag都被初始化ff了?
我该怎么办?
static char recvflag[1];
int recv1(char recvflag[1]);
main()
{
int t;
int ret;
recvflag[0]=0xFF;
for(t=0;t1;
}
找到recvflag[0]中为1的数据位。找到数据位后,把找到的数据位赋成0。
如果8位都是零的话,把八位都强制赋为1。
现在地问题是每次调用int recv1(char recvflag[1])时,recvflag都被初始化ff了?
我该怎么办?
|
我觉着有两个问题:
1、你的程序可能越界:char的最大值为128
2、程序逻辑有问题:
if(recvflag[0] | 0x00==0x00) recvflag[0]=0xFF;
if( recvflag[0] & 0x01==0x01)
按照你的思路应该是:
if((recvflag[0] | 0x00)==0x00) recvflag[0]=0xFF;
if( (recvflag[0] & 0x01)==0x01)
注意:| &的优先级
1、你的程序可能越界:char的最大值为128
2、程序逻辑有问题:
if(recvflag[0] | 0x00==0x00) recvflag[0]=0xFF;
if( recvflag[0] & 0x01==0x01)
按照你的思路应该是:
if((recvflag[0] | 0x00)==0x00) recvflag[0]=0xFF;
if( (recvflag[0] & 0x01)==0x01)
注意:| &的优先级
|
recvflag[0]||0x00==0x00
的意思是
recvflag[0]
或者
0x00==0x00 (永远为真)
按你的意思,应该使用
recvflag[0]|0x00 == 0x00
是|
不是||
的意思是
recvflag[0]
或者
0x00==0x00 (永远为真)
按你的意思,应该使用
recvflag[0]|0x00 == 0x00
是|
不是||
|
recvflag[0]>>1;你这条语句是干什么的?
|
if( recvflag[0]&&0x01==0x01)
同样的问题
同样的问题