#include <stdio.h>
void make_wave(int data,int n)
{
int temp =n - 1;
int i;
int yy;
int b = 1 << temp;
for(i=0;i<=temp;i++)
{
printf("i=%d ",i);
printf("%d ",data);
printf("%d ",b);
yy = data&b;
printf("data&b = %d ",yy);
if (data&b != 0)
{
printf("H\n");
}
else
{
printf("L\n");
}
data = data << 1;
}
}
int main()
{
make_wave(3,2);
return 0;
}
i=0 3 2 data&b = 2 H
i=1 6 2 data&b = 2 L
在i=1的时候,&的结果为2,为什么会输出L?
应该是H才对啊
!=
的优先级比&
高,所以if (data & b != 0)
等价于if (data & (b != 0))
,你应该改为if ((data & b) != 0)