If文の書き方について
-
Q.
If文で
If 値 = True Then
と書いたり
If 値 Then
と書いたりしているのを見ますが何が違うのでしょうか?
-
A.
値のデータ型がブール型(Boolean型とかBOOL型)であれば結果は同じです。
その他のデータ型である場合は条件によって結果が異なります。
-
解説
If文は真偽の判定を行います。
真である場合Then以降の文を実行し、偽である場合Else以降の分を実行します。
(言語によっては書き方に若干違いがあります)※真偽とは
真・・・0以外
偽・・・0下記の文を例に解説します。
If 値 = True Then ・・・ (1)
If 値 Then ・・・・・・・・・ (2)
値がブール型で内容がTrueである場合は、同じ結果を返します。
(1)は値がTrueと一致しているので真になります。
(2)は値が0以外であるので真になります。値が整数型であり内容が10であった場合は、違う結果を返します。
(1)は値がTrueとは一致しないので偽になります。
(2)は値が0以外であるので真になります。ちなみにVBAでは(他言語では検証していません)(1)と(2)の実行速度を比較すると(2)の方が若干速いです。
(速いといっても人が感じるほどの速さではありません)
(1)はまず値がTrueであるかの判定がありますので(2)より1回判定が多いのが理由です。下記のテストコードで実験できます。言語はVBAです。シングルクォーテーションの位置を変えて実行してください。
Public Function Test() As Boolean Dim StartTime As Single Dim i As Long Dim 値 As Boolean 値 = True StartTime = Timer For i = 0 To 10000000 If 値 = True Then ' If 値 Then End If Next i Debug.Print Timer - StartTime End Function
※データ型がLong型である場合は、なぜか値判定を行ったほうが速いです。
スポンサーリンク
スポンサーリンク
説明がわからないなどありましたらお問い合わせでお知らせください。
ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。