2

VB 6 の一部のプロパティに対するこの正規表現は次のとおりです。

iif (integervariable, 0, 1)

もしそうなら、iifは論理比較なしで整数引数をどのように解決するのか知りたいですか?

4

3 に答える 3

6

それは正規表現ではなく、関数である関数呼び出しIIfです。

VB では、ブール値のコンテキストで整数変数を使用できます。その場合、0は に変換されFalse、ゼロ以外は に変換されTrueます。

于 2013-01-16T08:50:56.367 に答える
4

それがIIf機能です。それについては、このドキュメントを確認してください。

通常、このプログラミング言語では、0 は forFalseを表し、それ以外は を表しますTrue

いずれにせよ、「True と False の同等の数値に依存するコードを書くべきではありません。」(MSDN) 詳細については、「ブール型が数値型に正確に変換されない」を参照してください

お役に立てれば。

于 2013-01-16T09:04:41.340 に答える
1

GSerg と SysDragon には、いくつかの適切な回答があります。言及されていないことを1つだけ追加したかった:

次のような論理比較のない IIF または IF があるときはいつでも

IIf (integervariable, 0, 1)

また

If (integervariable) Then ...

との論理比較Trueが暗示されます。そう

IIf (integervariable, 0, 1)

と同じです

IIf (CBool(integervariable) = True, 0, 1)

If (integervariable) Then ...

と同じです

If (CBool(integervariable) = True) Then ...

注意: SysDragon が述べたように、数値をブール値と比較するコードに依存しないでください。これが理由です:

Print IIF(CInt("123"), True, False)True

Print IIF(CBool("True"), True, False)また〜だTrue

したがって、両方を比較すると、結果は True になると想定されます。しかし、実際には、

Print IIF(CInt("123") = CBool("True"), True, False)として出てくるFalse

この例の教訓は、integervariableが整数 (またはブール値以外のその他のデータ型) である場合、論理比較を行うことがベスト プラクティスであるということです。あなたの場合、代わりに代わりにIIf (integervariable, 0, 1)使用してくださいIIf (integervariable <> 0, 0, 1)。結果は同じで、予測不能な結果になる可能性はありません。

于 2013-01-16T16:36:18.333 に答える