Maison > Article > développement back-end > Est-ce que `2[arr]` fonctionne en C et C ?
Accès aux tableaux à l'aide d'Index[array] en C et C
Considérez l'extrait de code suivant :
int arr[] = {1, 2, 3}; 2[arr] = 5; // Does this compile? assert(arr[2] == 5); // Does this assertion fail?
Certains enquêteurs pourraient se demander pourquoi cet extrait de code est compilé et exécuté sans erreurs.
Comprendre le code
L'expression 2[arr] est équivalente à *(2 arr). Puisque l'addition est commutative dans C et C , l'ordre des arguments de [] n'a pas d'importance. Par conséquent, 2[arr] accède efficacement au troisième élément du tableau arr.
Est-ce garanti par la spécification du langage ?
Oui. Les normes C et C énoncent explicitement ce comportement :
Par conséquent, l'accès aux tableaux à l'aide de index[array] est garanti par la spécification du langage, même si cela semble inhabituel ou contre-intuitif.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!