在for循环中使用printf()函数

时间:2018-01-21 16:02:33

标签: c for-loop printf increment

#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

4 个答案:

答案 0 :(得分:1)

因为<的优先级高于here&

所以在第二次迭代y=2x=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指出的那样,>的优先级高于&