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



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


示例相反,它应该执行为
当一个= 1
检查While条件1++<=1
检查While条件
然后printf应该打印3

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

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

1)检查外停车条件1++<=1。LHS评估为1,因此我们进入while内部。a自增为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;
}

因为我使用了大括号

编辑:我希望你们知道当跳出循环时A仍然是5 ?但至少你可以在循环中使用a

它是5,因为您在每个循环中添加1,即使在最后一个循环中,当条件不为真

相关内容

最新更新