为什么它打印47(00101111)的位数6是1。从右侧开始从1开始计数?
#include <stdio.h>
#include <stdlib.h>
int main()
{
int mask1,mask2;
//bit testing;
mask1=1<<3;
mask2=1<<6;
if(47&mask1!=0)
printf("\n bit number 3 is 1");
else
printf("\n bit number 3 is 0");
if(47&mask2!=0)
printf("\n bit number 6 is 1");
else
printf("\n bit number 6 is 0");
return 0;
}发布于 2019-11-23 03:38:46
与不等运算符!=相比,按位AND运算符&的优先级较低。所以这就是:
47&mask1!=0与以下内容相同:
47&(mask1!=0)添加括号,如下所示:
(47&mask1)!=0你就会得到预期的结果。请确保对mask2执行相同的检查。
https://stackoverflow.com/questions/59000645
复制相似问题