C 使用&;1<&书信电报;0?

C 使用&;1<&书信电报;0?,c,bitwise-operators,bitwise-and,C,Bitwise Operators,Bitwise And,我是一个新手,当涉及到位智能操作时,我偶然发现了一些有趣的东西。假设如下: unsigned char A; unsigned char B; if(A & 1 << 0){ //testing } 我们正在测试温度。单独测试temp与使用temp&11只测试位0有什么区别?谁告诉过你必须这样做?这从来都不是必需的,我宁愿不鼓励这样做。这是毫无意义的,并使您的代码不易理解。如果您想检查变量的奇怪性,那么只需测试x&11就可以了。请理解您所显示的是UB,因为您的变量

我是一个新手,当涉及到位智能操作时,我偶然发现了一些有趣的东西。假设如下:

unsigned char A;
unsigned char B;

if(A & 1 << 0){
    //testing
}

我们正在测试温度。单独测试temp与使用
temp&1
1只测试位0有什么区别?谁告诉过你必须这样做?这从来都不是必需的,我宁愿不鼓励这样做。这是毫无意义的,并使您的代码不易理解。如果您想检查变量的奇怪性,那么只需测试
x&1
1就可以了。请理解您所显示的是UB,因为您的变量都没有初始化。@yano这显然是一个伪代码示例,他不是在问测试结果,而是是否需要左移<代码>A
B
未定义/定义不会改变任何事情。别吹毛求疵了。这是一个很好的例子!谢谢你,先生!
unsigned char temp;
temp = ~A & ~B;
unsigned char A;
unsigned char B;

if(A & 1){
    //testing
}
if (A & 128) {
if (A & (1<<7)) {