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。
我知道后缀和后缀递增(递减)比 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。