我想在其上摆满了1
我写了下面的代码进行缓冲与操作,错误的答案和操作
unsigned char pTemp[1024];
memset(pTemp,0xFF,1024);
printf("AND - %d ",((unsigned char)pTemp[0] && 0x2));
我得到了答案 - 1。
请让我知道发生了什么事。提供解决方案。
我想在其上摆满了1
我写了下面的代码进行缓冲与操作,错误的答案和操作
unsigned char pTemp[1024];
memset(pTemp,0xFF,1024);
printf("AND - %d ",((unsigned char)pTemp[0] && 0x2));
我得到了答案 - 1。
请让我知道发生了什么事。提供解决方案。
按位AND运算符是&
而不是&&
。后者是用于组合布尔值的逻辑运算符。
&&
是逻辑运算符,而&
是按位运算符,它们是不同的。
2 && 1
给出非零,并且2 & 1
给出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
}
这可能做任务更舒适,如果你有使用了大量的操作或要定义多一点点复杂的操作。
我不会说它真的让读者“困惑”,但为这样的基本操作提供一个新名称可能不是一个好主意。 –
'&&'不是按位“和”操作 - 你需要'&'操作符。 –