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 Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化

コメントに付けようと思ってたら、先に指摘されたっす。

元ネタ(う、マッチポンプ)
【VB Love】比較と代入……、イジめんなエラい人^^;

こくぶんさん>

Dim i = -1
Dim j = -1.0
にすると、
Console.WriteLine((i = j) = j)
がTrueになりますね。 ^^;;

ILで動きを追ってみたんですが、どうやらVBだと比較結果を-1[True]/0[False]で返すみたいです。(C#は1[True]/0[False])
……昔のVBの名残か何かでしょうか?

や、やられた^^; おもいっきり先を越されたorz

【VB6】

Dim bTest As Boolean
bTest = True
Debug.Print bTest & ":" & CInt(bTest)
bTest = False
Debug.Print (bTest) & ":" & CInt(bTest)

【結果】
True:-1
False:0

で、ネタばらしですが、VBは互換性保持のためTrueは-1です。CTypeも-1です。でも.NET FrameworkのConvert.ToInt32は+1を返すんですねぇ 。面妖ですねぇ。ますます理解し合えて愛が深まりますねぇ。

【VB9】

        Dim bTest = True
        Console.WriteLine(CType(bTest, Int32))
        Console.WriteLine(Convert.ToInt32(bTest))

【結果】
-1
1

ということで、Booleanの数値化はやっちゃダメリストに挙がってます
Visual Basic のプログラミング ガイド  データ型のトラブルシューティング」
http://msdn.microsoft.com/ja-jp/library/ae382yt8.aspx

投稿日時 : 2009年4月20日 18:58

Feedback

# re: 【VB Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化 2009/04/20 19:14 こくぶん

ああぁ、ごめんなさいごめんなさいごめんなさい。。。

>VBは互換性保持のためTrueは-1です
やっぱり過去互換性なんですね~。
とても勉強になりました。 ^^

# re: 【VB Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化 2009/04/20 20:19 ちゅき

>ああぁ、ごめんなさいごめんなさいごめんなさい。。。

うぅ、謝っていただくなんて、こちらこそPow(ごめんねさい,3)
このエントリへのつかみがバッチリで、とても嬉しかったです^^

# re: 【VB Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化 2009/04/21 8:06 ちゃっぴ

bool と BOOL の違いのようなものがここでも。。。

# re: 【VB Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化 2017/07/04 1:14 SI299792

何か書けるみたいなので書かせていただきます。

Trueが-1なのは、互換性保持の為と書いてありますが-1でないと困るのです。

VBは論理演算子がありません。
And Or Not がありますが、あれはビット演算子です。
ビット演算子なので、Not 1 は-2になります。論理演算は、0 以外をTureとして扱うので、Trueを1 にするとNot TrueはTrueになってしまいます。

Trueを-1にしておけば、Not Trueは0 になります。

C はTrueが1 です。そうすると、ビット演算子と論理演算子を別々に用意する必要があります。私は、こっちの方が嫌です。

# re: 【VB Love】さ、先にやられた!。VBでやっちゃいけないBooleanの数値化 2017/07/07 11:04 ちゅき

>SI299792さん

確かにビット演算の観点から考えるとそうですね。
ありがとうございます。

# calibre de cartier chronograph 2017/10/18 0:13 deyfiejwwefsjsnmdkzx@hotmal.com

Oh my, these look good! I was thinking earlier today how good a Mounds bar would be, but your recipe sounds better.
calibre de cartier chronograph http://www.sawristwatches.com/

# PWylcPViFNe 2021/07/03 3:01 https://amzn.to/365xyVY

Please check out my web site too and let me know what

# oTvvAOMdCEMorrbINz 2021/07/03 4:31 https://www.blogger.com/profile/060647091882378654

Normally I do not learn post on blogs, but I would like to say that this write-up very forced me to try and do it! Your writing taste has been surprised me. Thanks, very great post.

# XkGHhsxkCTCIYqNPY 2022/04/19 10:47 johnansog

http://imrdsoacha.gov.co/silvitra-120mg-qrms

タイトル
名前
Url
コメント