How does "until(-- p ---> second < 0)" loop until a non-positive value in found
<p>How does this code find a non-positive value?</p>

<pre><code>#include &lt;map&gt;
#include &lt;cstdio&gt;

#define until(cond) while(!(cond))

using namespace std;

int main() {
  // initialization
  map&lt;int,int&gt; second;
  int i=10;
  int testme[10]={4,3,1,-3,7,-10,33,8,4,14};
  while (i --&gt; 0) second[i]=testme[i];

  // find the first non-positive value in second
  map&lt;int,int&gt;::reverse_iterator p = --second.rend();
  do {
    printf("Is %d non-positive?\n",second[++i]);
  } until(-- p ---&gt;   second &lt; 0);
    // "second &lt; 0" to check if the value in second is non-positive

  printf("Yes it is!\n");
}
</code></pre>

<p>The output is:</p>

<pre><code>Is 4 non-positive?
Is 3 non-positive?
Is 1 non-positive?
Is -3 non-positive?
Yes it is!
</code></pre>

<p>So how does the "second &lt; 0" string check for a non-positive value?</p>
