エントリーの編集
エントリーの編集は全ユーザーに共通の機能です。
必ずガイドラインを一読の上ご利用ください。
記事へのコメント0件
- 注目コメント
- 新着コメント
このエントリーにコメントしてみましょう。
注目コメント算出アルゴリズムの一部にLINEヤフー株式会社の「建設的コメント順位付けモデルAPI」を使用しています
- バナー広告なし
- ミュート機能あり
- ダークモード搭載
関連記事
2005-12-13
今日は、C言語の意外かもしれない仕様をいくつか。 配列の添え字のように見えるもの a[b] と書くと配列... 今日は、C言語の意外かもしれない仕様をいくつか。 配列の添え字のように見えるもの a[b] と書くと配列演算をしているような気分になるが、式の中に表れる a[b]は、(*( (a) + (b) ) ) の略記であり、ポインタの計算と何も変わるところがない*1。 というわけで: int a[] = {1,2,3,5,8}; int b[2][2]={{1,2},{5,9}}; a[3]=100; printf( "%d\n", 3[a] ); /* 3[a] は、*(3+a)なので、a[3] と同じ*/ b[1][0]=999; printf( "%d == %d\n", 1[b][0], 0[1[b]] ); /* どちらも b[1][0] と同じ */となる。 (foo()?a:b)[3] と書くよりも 3[foo()?a:b] と書いた方が短くなるので、ソースコードを1文字でも短くしよ