2012-09-25 83 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

我不會說它真的讓讀者「困惑」,但爲這樣的基本操作提供一個新名稱可能不是一個好主意。 –