if条件中的i ++与if while while循环之后的i ++有什么区别?

时间:2017-02-05 11:53:45

标签: c if-statement while-loop

int i = 0 ;
        while(i < N)
        {
            char ptype ;
            scanf("%c" , &ptype);
            //getchar();
            if(ptype == 'P'){
                scanf("%d" , &passto);
                //printf("\n");
                preplayer = arr[top];
                top++;
                arr[top] = passto;
                printf("%d\n", i); 
                i++;               
            }
            if(ptype == 'B'){
                int tempplayer = arr[top];
                top++;
                arr[top] = preplayer ;
                preplayer = tempplayer;
                i++;
            }
            //++i;
        }

而i ++不是在条件下,而是在之前:

int i = 0 ;
    while(i < N)
    {
        char ptype ;
        scanf("%c" , &ptype);
        if(ptype == 'P'){
            scanf("%d" , &passto);
            //printf("\n");
            preplayer = arr[top];
            top++;
            arr[top] = passto;
            printf("%d\n", i); 
            //i++;               
        }
        if(ptype == 'B'){
            int tempplayer = arr[top];
            top++;
            arr[top] = preplayer ;
            preplayer = tempplayer;
            //i++;
        }
        i++;
    }

它们都给出了不同的结果。 假设在代码之上定义了其他变量,如N = 10;和其他整数和字符也被定义。

以下两个代码在以下输入的情况下给出不同的结果:

1
10 23
P 86
P 63
P 60
B
P 47
B
P 99
P 9
B
B

4 个答案:

答案 0 :(得分:2)

两个代码段之间的逻辑差异在于,在第一个代码片段中,如果iptype'B',则变量'P'仅会增加。但是,在第二个代码段中,i随着while循环的每次迭代而递增,而不管ptype的值是多少。

在第二个版本中,while循环将迭代最多N次,无论输入如何。但是,第一个版本会无限次迭代,只有在'B''P'输入N次后才会停止。

答案 1 :(得分:1)

  

第一种情况:

如果是条件,如果ptype等于p,我将增加1,如果ptype也等于B,它将再增加1因此,i上的总增量将是2(1 + 1){{ 1}}所以,这意味着如果不满足这两个条件,i就不会发生增量。

  

第二种情况:

i ++外面if但是在inside while:所以我会在每次迭代时增加1,而不管条件如何。因此,迭代时,i的总增量将为1。

因此,在第一种情况下,如果满足两个'if'条件,我将增加两次,而在第二种情况下,在while循环的每次迭代中它将增加一次

答案 2 :(得分:0)

主要的区别在于,在if语句中使用计数增量意味着如果出现两个列出的选项并且将其从if语句中删除则意味着它将始终递增,它将递增。 这个问题就在于ptype!==“P”|| 'B'然后它不会增加。

答案 3 :(得分:0)

在if条件中

i ++:

此处i只会在ptype时增加,即扫描的字符为 P B 。换句话说,当控件进入i块中的任何一个时,if将递增。

i ++之后的if if while循环

在这种情况下,i将在while循环的每次迭代中递增。

此外,第一种情况还意味着如果不扫描所需的字符,while循环将迭代超过N次迭代次数。然而,在第二种情况下,while循环将仅迭代N次迭代,而不管是否找到所需的字符。