我想在其上擺滿了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
}
這可能做任務更舒適,如果你有使用了大量的操作或要定義多一點點複雜的操作。
我不會說它真的讓讀者「困惑」,但爲這樣的基本操作提供一個新名稱可能不是一個好主意。 –
'&&'不是按位「和」操作 - 你需要'&'操作符。 –