For example:
while((*s1++=*s2++)! ='\0')
How can the assignment of *s2++ to *s1++ be compared with '\0'?
For example:
while((*s1++=*s2++)! ='\0')
How can the assignment of *s2++ to *s1++ be compared with '\0'?
The value of an assignment expression is the value that was assigned to the left operand of the expression.
So what you have there is a test that the value assigned to *s1 is not equal to '\0'.