In the context that you are showing it, it is useless, since the value itself would evaluate to 0
or 1
.
It can be usefull in a context that would not do such a "Boolean" conversion, such as arithmetic or indexing
size_t zerovalues[2] = { 0, 0, };
for (size_t i = 0; i < N; ++i)
++zerovalues[!!A[i]];
At the end you'd have the number of values 0 of A
in zerovalues[0]
and the number of those that aren't in zerovalues[1]