#include<stdio.h>
int main()
{
int x=1,y=1;
for(;y&x<6;printf("%d %dn",x,y++))
x++;
}
在这里,我期望输出如下:
2 1
3 2
4 3
5 4
6 5
但我得到了输出
2 1
因为从这里<
&
具有更高的优先级。
所以在第二次迭代中y=2
和x=1
. x<6
变为真 - 结果1
当AND
ed 与 y
一起时,结果变得0
.所以它停止了。 y<x&6
相当于y&(x<6)
。
向您解释AND
的工作原理:- (以 6 位显示 - 但逻辑对sizeof(int)*8
bits
相同(。
000010
AND 000001
----------
000000
您是否正在尝试检查 y 和 x 是否都小于 6?如果是这样,您应该使用(y<6)&&(x<6)
而不是y&x<6
#include<stdio.h>
int main()
{
int x=1,y=1;
for(;y<6&x<6;printf("%d%d_",x,y++))
x++;
}
试试这个
我重新命令
#include<stdio.h>
int main()
{
int x,y;
for(x = 1, y = 1; (y & x)<6;printf("%d %dn",x,y++));
x++;
return 0;
}
因为,正如@coderredoc所指出的,>
的优先级高于&
.