我在编一个玩意程序时发现一个问题:
请看以下代码:
void TForm1::get_n(void)
{
int a,b,c,d;
int m,n,t,i;
//for(a=0;a<10;a++)
// {
a=1;
for(b=0;b<10;b++)
{
for(c=0;c<10;c++)
{
d=0; //这一行本应为不需要的代码
for(d==0;d<10;d++)
{
m=a*1000+b*100+c*10+d;
if(m==0) m=1;
m*=9;
n=d*1000+c*100+b*10+a;
// if(n==9801)
// Edit4->Text="9801";
if(m==n)
{
Edit1->Text=a;
Edit2->Text=b;
Edit3->Text=c;
Edit4->Text=d;
}
}
}
}
}
程序中的d=0;本来是一个不必要的代码,但少了一行,编译执行时却没有执行b,c的循环,也就是说m=a*1000+b*100+c*10+d只共执行了10次循环,而加了d=0;后才会执行b,c的循环,这种问题是不是编译器的问题还是C语言中的语法有别的隐性规定?
--------------------next---------------------
阅读(1512) | 评论(0) | 转发(0) |