いや、まだだから

やまだの仮想庭園 ~ いつか実体の伴う日まで

目次

Blog 利用状況

記事カテゴリ

書庫

日記カテゴリ

リンク

VB使いにはC++の名前の由来が理解できない?

東京勉強会#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 と変わりないってことかと。

#嘘書いてたら指摘お願いします。

 

非常に紛らわしいな、と。

#早く、○○○○っ○に言語対応表を作ってもらいたいな、と。

投稿日時 : 2008年3月18日 4:37

Feedback

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 7:41 さかもと

>>#早く、○○○○っ○に言語対応表を作ってもらいたいな、と。

ですね。

あれほど、「やるやる!絶対やる!むしろ本出す!」
って言ってたのに最近は遊んでもくれません。


で。

VB使いなので、もちろん由来は理解できません。

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 8:26 Mr.T

そうなんです、ないんです。
VB.NETになってからじゃないかな。
A+=1ってかけるようになったのも。

i++にするのと、++iにするのは意味が違うんだーというのは知ってましたが、
VB使いには加算して欲しいだけなのに、そこに意味を違わせる理由がどうして必要なんだ、
というのはあるかもしれません。

#いやぁ、AddとIncの比較だとIncが高速だーとかあったと思う

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 8:59 じゃんぬねっと

.NET になって i += 1 にようやく対応したわけですが、利用しない人が多かったり。

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 9:36 シャノン

言語対応表はそのうち恵比寿神様がやってくれそうな気配?

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 10:53 ぽぴ王子

○○○○っ○に入る人物を探るスレになりました。

さかもとっち。

はい次~

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 10:58 R・田中一郎

全然関係ないけどインクリメントって聞くと INC 命令を何となく思い出します。

Z80 のアセンブラには INC って命令があったんですよね。

INC HL

x86 のアセンブラだと add しかないんですね。

add eax,1

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 15:00 中吉

>○○○○っ○に入る人物を探るスレになりました。
セルゲイ先生

# 微妙になじめないVBの演算子 2008/03/18 15:24 PCだいちゅき

調子に乗って試してみました^^;

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/18 15:30 じゃんぬねっと

あれ? とりこびっちさんじゃないの?

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/19 0:41 とりこびっち

やるやるといった記憶がありますがモゴモゴ…。

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/19 2:21 やまだ

>> Mr.Tさん、じゃんぬさん

ほー、i += 1 は書けるんですね。なんとも中途半端な気が……。

>> (ふたたび)Mr.Tさん、Rさん

そうですよねー。i++ はアセンブラに近い感覚だと思います。
むしろアセンブラの最適化のためにそういう言語仕様にしたんじゃないかと。
i = i + 1
だと i の値をまずアキュムレータに移して、1を加算し、もとのレジスタに戻るコード、
i++
だと、そのレジスタ上で1を加算するコードに落ちたような……。
そういう意味では、このご時世ではもう必要のないシンタックスシュガーのような気もしますね。

>> シャノンさん、ぽぴ王子、ちゅきさん、(ふたたび)じゃんぬさん

あえて名前を出して追いつめないところが大人としての配慮だと思っていただけると(笑)。

>> とりこびっち

ほらほらっ、きのこの山を食べながら話さないっ!
んがんぐっ!


……あれ、誰か忘れてたっけ?まぁ、いーや(笑)。

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/19 10:30 中吉

>やるやるといった記憶がありますがモゴモゴ…。
セルゲイ先生ちゃんと覚えてたんだ^^

>なんとも中途半端な気が……。
うみゅ、とぉっても中途半端な気がします。
#でも、昔からこのような仕様なので、いまさら変えられたら、それはそれで問題ですが。でも気持ち悪く感じるんですよねぇ^^;。とくに+が。

むかーーーし

? +5-2
3

とかやってた名残りかな^^;

# re: VB使いにはC++の名前の由来が理解できない? 2008/03/19 10:37 中吉

あ、名前が...
私の本名≒中吉≒ちゅき、です^^;


# re: VB使いにはC++の名前の由来が理解できない? 2008/03/20 0:51 やまだ

> セルゲイ先生ちゃんと覚えてたんだ^^

えっと、セルゲイ・○○○○ッ○・イワノフでしったっけ?

> #でも、昔からこのような仕様なので、

VB.NET になったとき、変えてよかったんじゃ……とか言ってみる。

> 私の本名≒中吉≒ちゅき、です^^;

了解してますー。大阪勉強会ではお世話になりましたー。
……え、「≒」ってことは似て非なる別人ってことですか?(笑)

タイトル
名前
Url
コメント