为什么此代码的输出为空

a87*_*874 3 c string bit-manipulation

我正在尝试打印字符串的电源组.

代码编译成功,但是,执行时,屏幕上不会打印任何内容.

我无法理解这背后的原因.

以下是代码:

#include<stdio.h>
#include<string.h>
#include<math.h>
void main()
{
    char s[]="abcd";
    int i,j,k=1;
    int y=strlen(s);
    int z=pow(2,y);
    for(i=0;i<z;i++)
    {
        k=1;
        for(j=0;j<y;j++)
        {
            if(j & k)
                printf(" %c",s[j]);
            k=k<<1;
        }
        printf("\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

hac*_*cks 9

j & k总是评估为0.

j =  0, k =    1     ==> j & K = 0
j =  1, k =   10     ==> j & K = 0 
j = 10, k =  100     ==> j & K = 0
j = 11, k = 1000     ==> j & K = 0
Run Code Online (Sandbox Code Playgroud)