-1

我正在尝试对充满所有 1 的缓冲区执行 AND 操作。
我正在编写以下代码,

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

我得到了答案 - 1 。

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

4

3 回答 3

8

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

于 2012-09-25T09:13:02.323 回答
3

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

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

我相信你想要&这里。

于 2012-09-25T09:13:45.560 回答
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

}

如果您必须使用大量操作或想要定义更复杂的操作,这可能会使任务更舒适。

于 2012-09-25T10:09:04.210 回答