C 中运算符的优先级

Precedence of operators in C

我知道后缀和后缀递增(递减)比 C 中的比较(==)有更高的优先级。

但是我 运行 现在很困惑,如果我有 2 个条件循环,比如 while (0 != i--)while (0!= --i) ,那有什么区别呢?因为由于优先级的原因,递减应该总是先执行,然后再进行比较?

i-- "uses" i 的值然后递减。

--i 递减 i 然后 "uses" i.

的值

因此,如果 i=4 那么 while(0 != i--){ printf("%d\n", i); } 将显示 3(因为 i 现在递减)、2、1、0(因为检查完成时 i 为 1)。

在执行检查时 while(0 != --i) { printf("%d\n", i); } you'd get 3 (i is still decremented), 2, 1 but not 0.i` 为 0,因为它是 PREdecremented。