用一种暴力的办法输出一个十进制数的二进制形式,发现输出为2222222222222222,但for循环里不是已经写了变量<2了吗?用python tutor也发现循环过程中有变量被加到2了,请问是哪里出了问题呢?
#include
#include
using namespace std;
int main()
{
short int x;
cin>>x;
int a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;
for(a=0;a<2;a++)
for(b=0;b<2;b++)
for(c=0;c<2;c++)
for(d=0;d<2;d++)
for(e=0;e<2;e++)
for(f=0;f<2;f++)
for(g=0;g<2;g++)
for(h=0;h<2;h++)
for(i=0;i<2;i++)
for(j=0;j<2;j++)
for(k=0;k<2;k++)
for(l=0;l<2;l++)
for(m=0;m<2;m++)
for(n=0;n<2;n++)
for(o=0;o<2;o++)
for(p=0;p<2;p++)
{if(a*pow(2,15)+b*pow(2,14)+c*pow(2,13)+d*pow(2,12)+e*pow(2,11)+f*pow(2,10)+g*pow(2,9)+h*pow(2,8)+i*pow(2,7)+j*pow(2,6)+k*pow(2,5)+l*pow(2,4)+m*pow(2,3)+n*pow(2,2)+o*pow(2,1)+p*pow(2,0)==x)
break;
}
printf("%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d",a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p);
return 0;
}
25行的break只能退出最内层的循环啊
所以一直到所有上层循环全部退出才会输出,这时候上面的循环变量都是2了
你应该在最内层if语句的代码块中执行这个printf语句才对