ホームページ > バックエンド開発 > C++ > `2[arr]` は C および C で動作しますか?

`2[arr]` は C および C で動作しますか?

DDD
リリース: 2024-11-26 06:43:09
オリジナル
481 人が閲覧しました

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 の 3 番目の要素に効率的にアクセスします。

これは言語仕様によって保証されていますか?

はい。 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート