根据优先级,后缀增量的优先级高于 <= 为什么我得到输出为 5

According to precedence Postfix increment has higher precendence than <= why i get Output as 5

根据优先级,后缀增量的优先级高于 <=
所以当我 运行 这个程序时,为什么我得到输出为 5?

Example
相反,它应该执行为
当 a=1
检查 While 条件 1++<=1
检查 While 条件 2++<=2
然后 printf 应该打印 3

#include <stdio.h>

int main()
{
    int a=1;
    while(a++<=1)
    while(a++<=2);
    printf("%d",a);
    return 0;
}

是5,因为你每次循环加1,即使是最后一次循环,当条件不成立时

这更多地与后缀的语义有关 operator++ 而不是优先级。

1) 检查外部 while 条件 1++<=1。 LHS 的计算结果为 1,因此我们进入内部 whilea 增加到 2

2) 检查内部 while 条件 2++<=2。 LHS 的计算结果为 2,条件满足。 a 增加到 3.

3) 检查内部 while 条件 3++<=2。 LHS 计算为 3,条件不满足,a 递增为 4。我们回到外循环。

4) 检查外循环条件4++ <= 1。这失败了,循环结束,并且 a 增加到 5.

经过这么多评论,我应该给你你期望的输出。

试试这个:

 #include <stdio.h>

int main(void)
{
    int a=1;
    while(a++<=1){
        while(a++<=2){
            printf("%d",a);
        }
    }

    return 0;
}

就因为我用了BRACES

编辑: 我希望你知道当你脱离循环时 A 仍然是 5,好吗?但至少你可以在那个循环中用 a when a reach 3 做一些事情。