我正在尝试对缓冲区执行AND操作,该缓冲区填充所有1.
我正在编写以下代码,
unsigned char pTemp[1024];
memset(pTemp,0xFF,1024);
printf("AND - %d ",((unsigned char)pTemp[0] && 0x2));
我得到答案 - 1。
请让我知道发生了什么。提供解决方案。
答案 0 :(得分:8)
按位AND运算符为&
,而不是&&
。后者是用于组合布尔值的逻辑运算符。
答案 1 :(得分:3)
&&
是逻辑运算符,而&
是按位运算符,它们是不同的。
2 && 1
给出非零,2 & 1
给出0
。
我相信你想要&
。
答案 2 :(得分:0)
&是逻辑运算符,如果你对这种操作感到不舒服,你可以更好地记住它。如果你必须经常使用它,还有更多。见下一个例子:
#define AND(x,y) (x) & (y) //definition of custom operation.
#include <string.h>
#include <stdio.h>
void main(){
unsigned char pTemp[1024];
memset(pTemp,0xFF,1024);
printf("and:%d", AND(pTemp[0], 0x2)); //AND(x,y) returns the operation
}
如果您必须使用大量操作或想要定义更复杂的操作,这可能会使任务更加舒适。