I don't know any operator that works this way in C. Depending on the context, ampersands in C can mean a lot of different things.
Address-Of Statement
Right before the l value, for example
int j; int* ptr = &j;
The ptr code above stores the address j, and in this context, the address of any lvalue is taken. The code below would make sense to me if it were written this way.
static int varOne; static int varTwo; static int varThree; static void *arr[1][8432] = { { &varOne,&varTwo, &varThree } };
Logical and
The logical AND operator is simpler, unlike the operator above, it is a binary operator, that is, it requires a left and right operand. The way this works is to evaluate the left and right operands and return true if both are true or greater than 0 if they are not bool.
bool flag = true; bool flag2 = false; if (flag && flag2) { // Not evaluated } flag2 = true; if (flag && flag2) { // Evaluated }
Bitwise And
Another use of ampersand in C is bitwise AND. It is similar to the logical AND operator, except that it uses only one ampersand and performs AND operation at the bit level.
Suppose we have a number, and that it displays the binary representation shown below, the AND operation works like this:
0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 --------------- 0 0 0 0 0 0 1 0
On C ++, things get complicated. An ampersand can be placed after a type to indicate a reference type (you can think of it as a less powerful but safe form of a pointer), then everything becomes even more complicated with 1) a reference to the value of r, when two ampersands are placed after the type. 2) Universal references, when two ampersands are placed after the type of the template or automatically subtracted type.
I think that your code is probably compiled only in your compiler due to the expansion of some roles. I thought about this https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C , but I doubt it.