int main()
{
char *str="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int num=26;
for(int i=0;i<(1<<num);i++)//1<<26为2的26次方 ,循环①
{
for(int j=0;j<num;j++)//j表示二进制右数第几位,循环②
{
if((i&(1<<j))!=0)
{
printf("%c",str[j]);
}
}
printf("\n");
}
}
分析:首先看图了解大概
然后具体代码分析:
结果数据太多的话难分析,就当num=3的时候分析,结果如图所示:
1<<num 即为1<<3=8,即进行8