Rumah >pembangunan bahagian belakang >C++ >Adakah `2[arr]` Berfungsi dalam C dan C ?

Adakah `2[arr]` Berfungsi dalam C dan C ?

DDD
DDDasal
2024-11-26 06:43:09445semak imbas

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

Mengakses Tatasusunan Menggunakan Indeks[array] dalam C dan C

Pertimbangkan coretan kod berikut:

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

Sesetengah penemuduga mungkin bertanya mengapa coretan kod ini menyusun dan melaksanakan tanpa ralat.

Memahami Kod

Ungkapan 2[arr] bersamaan dengan *(2 arr). Oleh kerana penambahan adalah komutatif dalam C dan C , susunan hujah kepada [] tidak penting. Oleh itu, 2[arr] mengakses elemen ketiga arr tatasusunan dengan berkesan.

Adakah Ini Dijamin oleh Spesifikasi Bahasa?

Ya. Piawaian C dan C secara eksplisit menyatakan tingkah laku ini:

  • Piawaian C99: Perenggan 6.5.2.1 menyatakan bahawa E1[E2] bersamaan dengan *((E1) (E2)) .
  • C 11 Standard: Perenggan 5.2.1.2 menyatakan bahawa "E1[E2] bersamaan dengan "(*(E1) (E2))"

Oleh itu, mengakses tatasusunan menggunakan indeks[array] dijamin oleh spesifikasi bahasa, malah jika ia kelihatan luar biasa atau kontra-intuitif.

Atas ialah kandungan terperinci Adakah `2[arr]` Berfungsi dalam C dan C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn