这对于while循环在C中意味着什么?

时间:2016-08-27 09:52:43

标签: c

int main(){

    char s[10];
    int t,n,i,a,w;
    scanf("%d",&t);
    while(t--)
    {
        w=0;
        scanf("%d%s",&n,s);
        for(i=0;i<n;i++)
        {
            scanf("%d",&a);
            if(a%2==0)
            w++;
        }
        if(n==1 && w==1 && strcmp(s,"Dee") == 0)
        printf("Dee\n");
        else
        printf("Dum\n");
    }
    return 0;} 

while(t--)? 这是while(t=t-1)吗? 对于t的任何给定整数,情况永远不会如此?

4 个答案:

答案 0 :(得分:4)

while (t--) {
    ...
}

表示评估t是真还是假,然后递减t。因此,如果为1输入t的值,则上述循环将实际迭代一次,然后终止。

另一方面,如果您有以下循环:

while (--t) {
    ...
}

如果您为1输入t,那么循环甚至不会执行一次,因为t在循环评估之前会变为零。

答案 1 :(得分:2)

t=t-1--t都相同。 --t只是一个简短的符号。

while()如果是false0则会退出。循环中除0以外的任何数字(可能是正数或负数)始终为true执行/迭代t值减1个值。它一直持续到t的值变为0并退出循环。

t--被称为后减量。它首先检查然后递减值。

--t被称为预先减少。它首先递减值,然后检查。

答案 2 :(得分:2)

while (t--) 几乎等同于for(t = x; t>0; t--),案例t<0除外。何时,t<0for循环不执行,但while循环执行无限时间且代码崩溃。

此处,x是在运行t循环之前初始化while的值。

答案 3 :(得分:0)

在while循环中 while(x){----} ,如果 x&gt; = 1 ,则会执行循环,但 x < / strong>变为&lt; = 0 ,循环将被终止。

所以,在这个问题中,让我们说 t = 2 ,如 while条件语句 2 ,循环将执行但在 t 减少到 1 之前。同样, t 会递减为 0 ,循环会再次运行。

现在,第3次循环尝试运行时t的值已经为0,因此它将被终止