ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

C#とVB.NETで論理演算子の優先順位が異なる

さっき、かなり複雑な論理演算式を作って遊んでいたのですが、とんでもない事に気がつきました。

C#とVB.NETで同じ論理演算式の結果が異なるのです。

その論理演算式がこちら。複雑です。

C#
!true & !!true | false & false ^ true ^ true & !!!true | true

VB.NET
Not True And Not Not True Or False And False Xor True Xor True And Not Not Not True Or True

この2つはNot, And, Or, Xorを!, &, |, Xorに置き換えただけの、全く同じ論理式です。

しかし、
C#での結果はTrue、VB.NETでの結果はFalseになるのです!

計算を間違えるなんて事は無いでしょうから、C#とVB.NETで演算子の優先順位が違うのだと思います。

私が、一般的な優先順位に従って手計算すると、
答えはTrueでした。C#の方です。

こんな所にも、C#とVB.NETの違いがあったとは…。

論理演算式しかチェックしていませんが、
もしかすると他の演算子でも違いがあるかも知れません。

tag:

コメント

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/176-2337478f
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。