What is &&& operation in C What is &&& operation in C c c

What is &&& operation in C


It's c = i && (&i);, with the second part being redundant, since &i will never evaluate to false.

For a user-defined type, where you can actually overload unary operator &, it might be different, but it's still a very bad idea.

If you turn on warnings, you'll get something like:

warning: the address of ‘i’ will always evaluate as ‘true’


There is no &&& operator or token in C. But the && (logical "and") and & (unary address-of or bitwise "and") operators do exist.

By the maximal munch rule, this:

c = i &&& i;

is equivalent to this:

c = i && & i;

It sets c to 1 if both i and &i are true, and to 0 if either of them is false.

For an int, any non-zero value is true. For a pointer, any non-null value is true (and the address of an object is always non-null). So:

It sets c to 1 if i is non-zero, or to 0 if i is equal to zero.

Which implies that the &&& is being used here just for deliberate obfuscation. The assignment might as well be any of the following:

c = i && 1;c = !!i;c = (bool)i;          // C++ or C with <stdbool.h>c = i ? 1 : 0;        /* C */c = i ? true : false; // C++