我大晓得结果为什么是这样

结果:4

#include <stdio.h>
void main()
{
    int n=0;
    while(n++<=2);
    printf("%d\n",n);
}

结果:2,0,0

void main()
{
    int a,b,c;
    int s,w,t;
    s=w=t=0;
    a=-1;b=3;c=3;
    if(c>0)
        s=a+b;
    if(a<=0)
    {
        if(b>0)
            if(c==0)
                w=a-b;
    }
    else if(c>0)
        w=a-b;
    else t=c;
    printf("%d,%d,%d",s,w,t);
}

n++是后自增,先使用n,再加1.

while(n++<=2);

n等于2的时候,满足条件,当n等于3时,不满足条件,结束循环,并且n++结果为4.

img

while(n++<=2)循环结束时是n=3,循环结束后还需要n++,所以最终n=4

c>0成立,所以s=a+b=2
a<=0成立,b>0成立,c==0不成立,所以 w=a-b不执行
所以最终w和t还是初始值0

第一个没有循环体
第一遍:n++<=2,0<=2成立,n++,n=1
第二遍:n++<=2,1<=2成立,n++,n=2
第一遍:n++<=2,2<=2成立,n++,n=3
第一遍:n++<=2,3<=2不成立,n++,n=4
跳出循环输出
第二个
c>0成立,s=a+b; s=-1+3=2
if(a<=0)成立,不执行15-17行, 执行if(b>0)成立,执行if(c==0)不成立,不执行w=a-b;
最后输出,只有s的值变成了2,其他仍然是0