#include<stdio.h>
int main()
{
int x=1,y=1;
for(;y&x<6;printf("%d %d\n",x,y++))
x++;
}
这里我期望输出如下:
2 1
3 2
4 3
5 4
6 5
但我得到了一个输出
2 1
答案 0 :(得分:1)
因为<
的优先级高于here的&
。
所以在第二次迭代y=2
和x=1
中。 x<6
成为现实 - 结果为1
AND
y
后,结果变为0
。所以它停止了。 y<x&6
相当于y&(x<6)
。
向您解释AND
的工作原理: - (以6位显示 - 但sizeof(int)*8
bits
的逻辑方式相同。)
000010
AND 000001
----------
000000
答案 1 :(得分:1)
您是否尝试检查y和x是否小于6?
如果是,则应使用y&x<6
(y<6)&&(x<6)
答案 2 :(得分:0)
#include<stdio.h>
int main()
{
int x=1,y=1;
for(;y<6&x<6;printf("%d%d_",x,y++))
x++;
}
试试这个
答案 3 :(得分:0)
我建议
#include<stdio.h>
int main()
{
int x,y;
for(x = 1, y = 1; (y & x)<6;printf("%d %d\n",x,y++));
x++;
return 0;
}
因为正如@coderredoc指出的那样,>
的优先级高于&
。