C i++;在if条件和i++;在while循环中的if之后?

C i++;在if条件和i++;在while循环中的if之后?,c,if-statement,while-loop,C,If Statement,While Loop,两个代码段之间的逻辑区别在于,在第一个代码段中,变量i仅在ptype为'B'或'p'时才会递增。但是,在第二个代码段中,i随着while循环的每次迭代而递增,而不管ptype的值是多少 在第二个版本中,while循环将迭代最多N次,而不考虑输入。但是,第一个版本的迭代次数是无限的,仅在输入'B'或'P'次后停止。主要区别在于,在if语句中增加计数意味着如果出现两个列出的选项中的任何一个,它将增加,而在if语句中增加计数意味着它将始终增加。 当前的问题是如果ptype!==“P”| |“B”则不会

两个代码段之间的逻辑区别在于,在第一个代码段中,变量
i
仅在
ptype
'B'
'p'
时才会递增。但是,在第二个代码段中,
i
随着
while
循环的每次迭代而递增,而不管
ptype
的值是多少


在第二个版本中,
while
循环将迭代最多
N次
,而不考虑输入。但是,第一个版本的迭代次数是无限的,仅在输入
'B'
'P'
次后停止。

主要区别在于,在if语句中增加计数意味着如果出现两个列出的选项中的任何一个,它将增加,而在if语句中增加计数意味着它将始终增加。 当前的问题是如果ptype!==“P”| |“B”则不会递增

第一种情况:

在if条件内,如果ptype等于p,我将得到增量1,如果ptype也等于B,我将再次得到增量1。因此,当且仅当两个条件都满足时,i上的总增量将为2(1+1)

第二种情况:

i++在if外部,但在while内部:因此,无论if条件如何,我在while的每次迭代中都会增加1。所以,每次迭代时,i上的总增量为1


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

这里,
i
仅当
ptype
即扫描字符为pB时才会递增。换句话说,
i
将在控件进入
if
块时递增

i++在while循环中的if之后

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


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

当两个条件都满足时,在第一个示例中i增加两次,但在第二个示例中仅增加一次example@NotGaeL如果我读得正确,这两个条件都无法满足,因为
ptype
只能有一个值,而
if
子句不会更改该值,在第一个例子中,如果不满足任何条件,我将不增加,但在第二个例子中,它将通过在第一个循环中将
ptype
的内容重新分配到
'B'
来增加。这不是很明显吗?在第一种情况下,我增加了2,我不明白原因,虽然我完全理解你的答案,但当你的答案被考虑时,在上述输入的情况下,它不应该给出不同的结果。我已经提到,我将增加两倍,第一次是ptype='P',第二次是ptype的时间==“B”,因此,i上的总增量将为2(1+1)我已经提到,当且仅当ptype=p且也等于B时,增量将发生两次@tod@AmbrishPathak在第一种情况下,它增加两次的原因是因为它在一行中读取一个字符,然后读取一个整数,所以在每行中循环执行两次。@tod是的,代码是正确的,我得到了它的答案增加两倍,您可以阅读上面的内容。
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;
        }
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++;
    }
1
10 23
P 86
P 63
P 60
B
P 47
B
P 99
P 9
B
B