C位屏蔽AND操作问题

Veg*_*512 2 c

我是C的新手,我很难理解位掩码操作的用法.例如,我有以下代码

if((input & 0x08)== 0)
{

 //Do....//

}
Run Code Online (Sandbox Code Playgroud)

我把输入作为int值00000111,它是二进制和十六进制的7,但是当我做这个比较时,它的计算结果为false(从不输入if语句).

这是我理解和应该发生的事情

          00000111  input
        & 00001000  0x08
         ------------
          00000000  answer
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何才能获得正确的输出.

Cac*_*nta 5

int main(){
        int input = 7;

        if((input & 0x08)== 0)
        {
                printf("Hello!\n");
        }

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

你是对的,这个程序打印"你好!".

您的代码中必定存在其他问题.尝试始终创建函数并测试最简单的示例.

尝试打印语句input之前的值if.

希望能帮助到你.

  • 我期待很快就要澄清这个问题 (2认同)