title: what does while ((*s = *t) != ’\0’) mean?
body: <p>I was reading about pointers in K&amp;R book here</p>
  <p><a href="https://hikage.freeshell.org/books/theCprogrammingLanguage.pdf" rel="nofollow noreferrer">https://hikage.freeshell.org/books/theCprogrammingLanguage.pdf</a></p>
  <p>and then, explaining what strcpy do exactly its written :</p>
  <pre><code>/* strcpy: copy t to s; pointer version */
  void strcpy(char *s, char *t) {
    while ((*s = *t) != ’\0’) {
      s++;
      t++;
    }
  }
  </code></pre>
  <p>But I couldn't understand the line <code>while ((*s = *t) != ’\0’)</code> in which there are 2 of ().</p>
  <p>What I learned is using it as : <code>while( condition )</code> !</p>