title: I do not understand the operation of inverter string
body: <p>I'm studying two functions that invest strings the problem is that I find it hard understand how they work I see strange things in the code as, this part</p>
  
  <pre><code>return b = c &amp; '\n';
  </code></pre>
  
  <p>another thing is the way you use the ternary operator</p>
  
  <pre><code>b + e ?: f(0);
  </code></pre>
  
  <p>the first expression is omitted I leave the two functions</p>
  
  <pre><code>int b, e;
  void f(c)
  {
      e = 13 &amp; c;
      if(isspace(c)) return;
  
      b++, f(getchar());
      b--, putchar(c);
      b + e ?: f(0);
  }
  
  int f(c)
  {
      static int b;
      if(isspace(c))
          return b = c &amp; '\n';
      f(getchar());
  
      printf("(%c)\n", b);
  
      return putchar(c) == b &amp;&amp; f(c);
  }
  </code></pre>
  
  <p>someone explain to me how this goes?</p>