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


#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=2x=1. x<6变为真 - 结果1AND 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所指出的,>的优先级高于&.

最新更新