電子書籍の厳選無料作品が豊富!

VBSのIF文の質問です。
OS:XP(SP3)
たまたま間違った変数名を使った事ではまってしまった事なのですが
下記がTrueで評価されてしまいました。これは正しい評価なのでしょうか?

サンプルコード

rcode = 0
a = 0

If rcode = e Then
msgbox "「" & rcode & "」 = 「" & e & "」は間違った評価だと思います"
else
msgbox "「" & rcode & "」 <> 「" & e & "」です"
end if

A 回答 (2件)

MsgBox TypeName(e)


を実行すると、「Empty」と表示されます。

 ここで、
rcode = 0
である場合に、
rcode = e
という式の意味は、
0 = empty
となりますが、

●VBScript ランゲージ リファレンス - VBScript の演算子 - 比較演算子
http://msdn.microsoft.com/ja-jp/library/cc392349 …

------------- 引用 →
条件:行われる演算
一方の式が Empty、他方が数値:数値モードで比較を行います。Empty には 0 を使用します。
← 引用 -------------
とありますので、
0 = 0
と評価され、従って「True」と評価されます。

 ご参考までに。。。
●VBScript の変数
http://msdn.microsoft.com/ja-jp/library/cc392253 …
------------- 引用 →
Microsoft® Visual Basic® Scripting Edition (以下 VBScript) では、変数のデータ型は常にバリアント型 (Variant) です。
← 引用 -------------
●VBScript のデータ型
http://msdn.microsoft.com/ja-jp/library/cc392195 …
------------- 引用 →
Empty 値は、初期化されていない (初期値が代入されていない) バリアント型 (Variant) の変数を示します。その値は、数値変数として使用されるときは 0、文字列変数として使用されるときは長さ 0 の文字列 ("") として扱われます。
← 引用 -------------
    • good
    • 0

別件ですが


Option Explicit を付けて、宣言無しに変数を使えないようにすると、変数名を間違えたときにはエラーになるので、少しは間違いを減らせます。

間違えた変数名が、定義済みの別の変数名になってしまっているとダメですが
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!