在下面的程序中,我被期望无限循环作为输出.但是输出是0,请帮助我解释它背后的概念


void main()
{   
     int i;
     int s=0;
     while(i<30)
     s+=i;
     i++;
     printf("Sum is %d",s);
}

/输出为 0,如何?我期待无限循环。/

i未初始化。它可以具有任何值。如果它的值大于/等于 30,则循环将不会执行,s保持为 0。

void main()
{   
     int i;
     int s=0;
     while(i<30)
     s+=i;
     i++;
     printf("Sum is %d",s);
}

i未正确初始化,导致未定义的行为。将其更改为:

int main(void)
{   
     int i = 0;
     int s=0;
     while(i<30)  // Infinite loop per OP's expectation
       s+=i;
     i++;
     printf("Sum is %d",s);
return 0;
}

注意(感谢@MikeCAT(:为避免基于实现的混乱,请将void main()替换为int main(void)

最新更新