Heim > Backend-Entwicklung > C++ > Funktioniert „2[arr]' in C und C?

Funktioniert „2[arr]' in C und C?

DDD
Freigeben: 2024-11-26 06:43:09
Original
500 Leute haben es durchsucht

Does `2[arr]` Work in C and C  ?

Zugriff auf Arrays mit Index[array] in C und C

Beachten Sie den folgenden Codeausschnitt:

int arr[] = {1, 2, 3};
2[arr] = 5; // Does this compile?
assert(arr[2] == 5); // Does this assertion fail?
Nach dem Login kopieren

Einige Interviewer fragen sich vielleicht, warum dieses Code-Snippet ohne kompiliert und ausgeführt wird Fehler.

Den Code verstehen

Der Ausdruck 2[arr] entspricht *(2 arr). Da die Addition in C und C kommutativ ist, spielt die Reihenfolge der Argumente für [] keine Rolle. Daher greift 2[arr] effektiv auf das dritte Element des Arrays arr zu.

Wird dies durch die Sprachspezifikation garantiert?

Ja. Die C- und C-Standards geben dieses Verhalten ausdrücklich an:

  • C99-Standard: Absatz 6.5.2.1 besagt, dass E1[E2] äquivalent zu *((E1) (E2)) ist. .
  • C 11 Standard: Absatz 5.2.1.2 besagt, dass „E1[E2] ist äquivalent zu „(*(E1) (E2))“

Daher ist der Zugriff auf Arrays mit index[array] durch die Sprachspezifikation garantiert, auch wenn dies ungewöhnlich erscheint oder kontraintuitiv.

Das obige ist der detaillierte Inhalt vonFunktioniert „2[arr]' in C und C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage