Je ne connais pas d'opérateur qui fonctionne de cette façon en C. Selon le contexte, l'esperluette en C peut signifier beaucoup de choses différentes.
Adresse de l'opérateur
Juste avant une lvalue, par exemple
int j;
int* ptr = &j;
Dans le code ci-dessus, ptr stocke l'adresse de j, et dans ce contexte, prend l'adresse de n'importe quelle valeur l. Le code ci-dessous, aurait eu plus de sens pour moi s'il avait été écrit de cette façon.
static int varOne;
static int varTwo;
static int varThree;
static void *arr[1][8432] = { { &varOne,&varTwo, &varThree } };
ET logique
L'opérateur logique AND est plus simple, contrairement à l'opérateur ci-dessus, c'est un opérateur binaire, ce qui signifie qu'il nécessite un opérande gauche et un opérande droit. Il fonctionne en évaluant les opérandes gauche et droit et en renvoyant true, si les deux sont true, ou plus grand que 0 s'ils ne sont pas bool.
bool flag = true;
bool flag2 = false;
if (flag && flag2) {
// Not evaluated
}
flag2 = true;
if (flag && flag2) {
// Evaluated
}
ET par bit
Une autre utilisation de l'esperluette en C est l'exécution d'un ET par bit. C'est similaire à l'opérateur logique AND, sauf qu'il n'utilise qu'une seule esperluette et effectue une opération AND au niveau du bit.
Supposons que nous ayons un nombre et qu'il corresponde à la représentation binaire présentée ci-dessous, l'opération ET fonctionne comme suit :
0 0 0 0 0 0 1 0
1 0 0 1 0 1 1 0
---------------
0 0 0 0 0 0 1 0
Au pays du C++, les choses se compliquent. L'esperluette peut être placée après un type pour désigner un type de référence (on peut la considérer comme une sorte de pointeur moins puissant mais sûr), puis les choses se compliquent encore avec 1) la référence à valeur r lorsque deux esperluettes sont placées après un type. 2) les références universelles lorsque deux esperluettes sont placées après un type modèle ou un type auto-déduit.
Je pense que votre code ne se compile probablement que dans votre compilateur en raison d'une sorte d'extension. Je pensais à ceci https://en.wikipedia.org/wiki/Digraphs_and_trigraphs#C mais je doute que ce soit le cas.