C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.86196 の関連記事表示

<< 0 >>
■86196  Re[7]: bool変数の比較演算について
□投稿者/ ヒークン -(2017/12/24(Sun) 12:20:07)
    2017/12/24(Sun) 12:23:05 編集(投稿者)

    皆さん、回答ありがとうございました。

    私はソフト開発会社に勤めているわけではないので、
    一般的な開発ルール等は全く存じ上げないため、
    おかしな質問があればそれはご容赦頂きたいのですが、
    色々とお話しを伺う中で、一つ思ったのは、
    場合によっては、否定分岐で「If a = False Then」とした方が安全な
    環境があるのではないか、ということです。
    この「環境」とは、OSや言語というよりは、開発者サイドの仕様だったり、
    開発ルールの環境を指します

    そう思った理由の一つとして、
    WebSurferさんの■86171の例示

    > if (expression) statement

    の式では、expression == 0の場合は偽、それ以外は真と評価されます。
    C言語のことは良く分かりませんが、VBでNot演算を行うと、
    「Not expression」はexpressionのビット反転ですので、
    expressionが0以外の場合の「Not expression」は、
    すべてのビットに1が立っている場合でないと0にはなりません。

    このことに気づいたのが、とっちゃんさんの■86177にあった

    > #define VARIANT_TRUE ((VARIANT_BOOL)-1)

    です。
    「1」ではなく、あえて負号付きの「-1」ということは、
    これが1ビットではなく、複数ビットであることが分かります。
    VBAのVARIANT変数のサイズは勉強不足で分かりませんが、
    仮に1バイトだとすると、-1はすべてのビットに1が立っている
    &FF(0xFF)ということでしょうか。

    そうなると、通常はあり得ないことかも知れませんが、物理的な可能性として
    「0または-1を返すメソッドから、バグや何かの間違いで、
    それ以外の値が戻ってくる場合がある」ことは0%とは言えないかも知れません。
    (限りなく0%でしょうが。)

    そこで、「If a = False Then」という式評価を推奨する環境がある、
    ということであれば、一定の理解はできます。

    しかしながら、「If a = True Then」はどうも受け付けません。
    「頭痛が痛い」と言っているのと同じような気がします。(分かり難いたとえでスミマセン)


    > if (a==true) に違和感があるという印象はとても素敵だと思う。その感覚を大事にして欲しい。

    権威のある方にお褒め頂くことは、非常にうれしい限りです。
    しかしながら、if (a==true)(VBのIf a = True Then)は
    先程申し上げた通り、違和感「しかない」です。
記事No.86166 のレス /過去ログ147より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -