#include
volatile int i;
int main()
{
int c;
for (i = 0; i < 3; i++)
{
c = i &&& i;
printf(\"%d\\n\"
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’