東京勉強会#18 お疲れ様でした。
私は諸般の情事事情により、欠席させていただきました。しかし、ちっとも休んだ気がしないのはどうしてなんだろう(笑)。
むしろ出席するより大変だったような気が……。なぜだー。
さてさて、今回は小ネタを少々。
今までCとかC++とかJava とかになじんできたので、むしろ当たり前に思っていたことなのですが。
インクリメント/デクリメント演算子ってのがあります。軽くおさらいしておくと、インクリメント演算子とは
i = i + 1;
のことを
i++; もしくは ++i;
って書くことです。これも一種のシンタックスシュガーと呼べるものなのかもしれません。
変数の前に ++ を書くか、変数の後に ++ を書くかには微妙な差異があって、
j = ++i;
って書くと、
i = i + 1;
j = i;
の意味を持ちますが、
j = i++;
って書くと、
j = i;
i = i + 1;
の意味を持ちます。この場合、j が加算前の値をとるか加算後の値をとるかが違います。
知ってる人にとっては、非常に今更な話なんですが、この前、ちょっと VB.NET で似たような構文を書こうとしたんですよ。
あれ? --i は書けるけど i-- が書けない。
--i って書いても、値が変わっているように見えない。
で、ようやく気がついた。VB.NET ってインクリメンタル/デクリメンタル演算子がないのですね?(→ここからタイトルにつながる)
つまり、--i って書けるように見えても、実は -(-i) の意味で二回符号を反転させるので、実は i と変わりないってことかと。
#嘘書いてたら指摘お願いします。
非常に紛らわしいな、と。
#早く、○○○○っ○に言語対応表を作ってもらいたいな、と。