PCだい「ちゅき」

気がつけば庶事手伝い

目次

Blog 利用状況

ニュース

・H24/01/02
 Microsoft MVPを受賞しました
・H23/11/18
 MCTの憂鬱さんと相互リンクを張っていただきました^^
・H23/09/10
 プログラミング生放送でスピーカーさせていただきました^^ ・H22/12/18
 わんくま同盟でスピーカしました^^
さて、来年はどんな年になるかな。予想が当たるといいなぁ。
・H22/07/17
 わんくま同盟でスピーカしました^^
技術系のセッションは久しぶり。VB! VB!
・H22/03/13
 Tech FieldersでLTのスピーカしました^^
・H21/12/12
 わんくま同盟でスピーカしました^^
最近はずっとLT担当だったので、ちょっと新鮮でした^^
・H20/11/18
 Tech Fielders セミナー 大阪の
 Lightning Talkで優勝しました^^
・H20/8/23
 わんくま同盟で2回目のスピーカしちゃいました
 WCFと戯れてみました^^
・H20/5/17
 わんくま同盟でスピーカしちゃいました^^
 ちゃんとスピーカー持参しましたよんw
・H20/2/22
 なめ猫の参加証もらいました^^
・H20/1/22
 テンプレートを変えてみました^^
・H19/7/23
 ACEプログラムで、ナップサックをもらった上、工具セットももらえることになりました^^
・H19/1/11
 1が並ぶ縁起の良い日に投稿開始!。今後ともお付き合いよろしくお願いします
・H18/10/29
 参加させていただきました^^
ド・初心者ですがどうぞよろしくお願いします。

↓うーん、仕事しろ^^;
Chukiの脳内メーター

Chukiの脳内メーター

書庫

日記カテゴリ

ギャラリ

コミュニティ

相互リンク

微妙になじめないVBの演算子

元ネタ:

いや、まだだから (やまださん)-VB使いにはC++の名前の由来が理解できない?
http://blogs.wankuma.com/yamada/archive/2008/03/18/128231.aspx

確かにこの演算子の解釈は訳分からんのですよねぇ。

        Dim i As Integer
        i = 2
        Debug.Print("-")
        Debug.Print(CStr(i))
        Debug.Print(CStr(-i))
        Debug.Print(CStr(--i))
        Debug.Print(CStr(---i))
        Debug.Print(CStr(----i))
        Debug.Print(CStr(---(-i)))
        Debug.Print("+")
        Debug.Print(CStr(+i))
        Debug.Print(CStr(++i))
        Debug.Print(CStr(+++i))

【結果】
-
2
-2
2
-2
2
2
+
2
2
2

----i は ---(-i)っぽいですね。
気持ち悪いのよねぇ^^;

ちなみに **i はエラーになるです。

投稿日時 : 2008年3月18日 15:19

Feedback

# re: 微妙になじめないVBの演算子 2008/03/18 15:22 凪瀬

数値型であれば単項演算子の"-"が符号反転をしているだけなので極めて単純なように思えますが。

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

-だけだとそうなんですが、+とかはやっぱり気持ち悪いっす。

# re: 微妙になじめないVBの演算子 2008/03/18 15:58 なちゃ

それ以外の解釈が思いつかない…
っていうか何が疑問なのかが分からない…

# re: 微妙になじめないVBの演算子 2008/03/18 16:38 ちゅき

>何が疑問なのかが分からない…
うーん、疑問という訳ではないんです。
単になじめないというか気持ち悪い^^;

気持ち悪い理由は
i = 2
j = ++i
Debug.Print( "i = " & CStr(i))
Debug.Print( "j = " & CStr(j))

i = 2
j = 2

など、いつもの癖でインクリメントしたつもりのコードがバグになってしまうからっす^^;
.NETがつかない頃のVBからこの仕様ですが、IDEがいっしょになった.NETでは非常に気持ち悪く感じます。
#VBS書くときは全然気にならないんですけれどね^^;

# re: 微妙になじめないVBの演算子 2008/03/18 17:21 まどか

うーん、私も含めVBな人は++なんて演算子が無いってことを確実に知ってますからねぇ。
こっちからC++側を見ると、疑問ではなく便利なものがありますねになると思う。

# re: 微妙になじめないVBの演算子 2008/03/18 17:33 ちゅき

>こっちからC++側を見ると、疑問ではなく便利なものがありますねになると思う。

なるほど。
VB.NETでは j += i のような表記ができるようになってますが、あんまり使わないですか?
#これができるようになったので、VB.NETでも++iとかヤっちまうです

# re: 微妙になじめないVBの演算子 2008/03/18 17:53 Mr.T

>VB.NETでは j += i のような表記ができるようになってますが、あんまり使わないですか?

使いますよー。
でも、++はできないのよねーと分けて理解しちゃってます。

# re: 微妙になじめないVBの演算子 2008/03/18 18:14 ちゅき

>でも、++はできないのよねーと分けて理解しちゃってます。
うみゅ、ですよねー。

我ながら、変なことにこだわってるなぁ、という自覚はありです^^;

# re: 微妙になじめないVBの演算子 2008/03/19 2:29 やまだ

んーと、私は一応理解はしましたので、気持ち悪さは特にないです。他の言語知ってると紛らわしいよー、とは思いますが。

----i は -(-(-(-i))) になるんでしょうね。
これもそれも、二項演算子の足し算かけ算としての記号 +, - と、数字の符号をあらわす +, - で同じ記号を用いているから混乱しやすいんでしょうね。

あと、まどかさんが「便利なものがありますねとなる」と書いておられますが、この記法、本当に便利なんでしょうかねぇ。
私の方のコメントでも書きましたが、単にアセンブリ最適化のためにあった記法のような気が。なら、別に今じゃいらんのでは、とも思ったりもします。

タイトル
名前
Url
コメント