>  기사  >  백엔드 개발  >  `2[arr]`은 C와 C에서 작동합니까?

`2[arr]`은 C와 C에서 작동합니까?

DDD
DDD원래의
2024-11-26 06:43:09422검색

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

C 및 C에서 Index[array]를 사용하여 배열에 액세스

다음 코드 조각을 고려하세요.

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

일부 면접관은 왜 이 코드 조각이 컴파일 및 실행되지 않고 실행되는지 물을 수 있습니다. 오류.

코드 이해

2[arr] 표현식은 *(2 arr)과 동일합니다. C와 C에서는 덧셈이 교환 가능하므로 []에 대한 인수의 순서는 중요하지 않습니다. 따라서 2[arr]은 배열 arr의 세 번째 요소에 효과적으로 액세스합니다.

이것이 언어 사양에 의해 보장됩니까?

예. C 및 C 표준에서는 이 동작을 명시적으로 설명합니다.

  • C99 표준: 6.5.2.1 단락에서는 E1[E2]가 *((E1) (E2))와 동일하다고 명시합니다. .
  • C 11 표준: 단락 5.2.1.2에서는 "E1[E2]는 "(*(E1) (E2))"와 동일하다고 명시합니다.

따라서 index[array]를 사용하여 배열에 액세스하는 것은 언어 사양에 의해 보장됩니다. 비정상적이거나 반직관적인 경우.

위 내용은 `2[arr]`은 C와 C에서 작동합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.