2012-09-25 58 views
-1

我想在其上摆满了1
我写了下面的代码进行缓冲与操作,错误的答案和操作

unsigned char pTemp[1024]; 
memset(pTemp,0xFF,1024); 
printf("AND - %d ",((unsigned char)pTemp[0] && 0x2)); 

我得到了答案 - 1。

请让我知道发生了什么事。提供解决方案。

+5

'&&'不是按位“和”操作 - 你需要'&'操作符。 –

回答

8

按位AND运算符是&而不是&&。后者是用于组合布尔值的逻辑运算符。

3

&&是逻辑运算符,而&是按位运算符,它们是不同的。

2 && 1给出非零,并且2 & 1给出0

我相信你想&在这里。

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 

} 

这可能做任务更舒适,如果你有使用了大量的操作或要定义多一点点复杂的操作。

+1

我不会说它真的让读者“困惑”,但为这样的基本操作提供一个新名称可能不是一个好主意。 –