while 循环中的后缀运算符

Postfix operators in while loops

今天我在浏览一些 C++ 代码时偶然发现了这个:

while (c--) {
    a = (a + 1) % n;
    while(arr[a]) a = (a + 1) % n;
}

c 是一个整数。 while 循环不采用要计算的布尔表达式吗?我知道 1 和 0 很好,因为它们分别代表真和假,但在这种情况下,c 取的值不是 0 和 1。这是做什么的?

任何不是 0 的都被认为是真的,所以这将循环直到 C=0。

可能只是 "using less code"

的一个简单例子