I'm sure people do that (even though it's not necessary per some year C standard) but generally the pattern is actually for converting things which are not
already 0 or 1
into 0 or 1. For example, you might want to use it here:
int num_empty_strings = !!(strlen(s1)) + !!(strlen(s2)) + !!(strlen(s3))
which is equivalent to:
int num_empty_strings = (strlen(s1) != 0) + (strlen(s2) != 0) + (strlen(s3) != 0)
Which you use is really a matter of coding style.