400
Post/Edit Page
C言語カルトクイズ。「int x[3] = { 1, 2, 3 }」のとき、次のコードが意味する処理は何か?「int y = 2[x]」▼単純なわりに、意外と正答率の低い問題ではないだろうか。実用性がほとんどないところも、カルトな感じで良い。正解は、「int y = x[2]」と同じ処理である。そんな馬鹿なと思う人は、operator[]が二つのオペランドに対してどのような処理を行うか、考えてみると腑に落ちるのではないだろうか。ptr[n]とは、*(ptr+n)である。とすれば、n[ptr]は*(n+ptr)であり……これらは全く同じアドレスを指しているではないか!▼そういうわけで、2[x]は普通にx[2]の代わりとして通用する。こうした変わり種について考えてみるのも、より深い言語理解のためには役に立つだろう。言語規約レベルまで煮込んだC言語のカルトクイズ集なんて、あったら面白いかもしれない。堅くて分厚い本より学習が捗りそうだ。ディープな世界を探検するには、遊び心が不可欠である。
pass:
Draft