• ベストアンサー

条件付きコンパイル: #IF 1 Then と #IF 0 Then

条件付コンパイルで、 『#If 1 Then』と『#If 0 Then』の条件の違いを教えてください。 『#If ○○○=1 Then』などの場合はわかるのですが、 単に『#If 1 Then』の場合は何をもって真となるのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

条件式は、強制的に「True」又は「False」に解釈されます。 で、「数値」を「True」又は「False」に解釈する場合、 「0」は「False」、「0以外」は「True」になります。 (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/vsfctcbool.asp) つまり、 『#If 1 Then』は、「必ずTrue」=常に有効 『#If 0 Then』は、「必ずFalse」=常に無効 に成ります。

delilah91
質問者

お礼

ご回答ありがとうございます。 >『#If 1 Then』は、「必ずTrue」=常に有効 この場合、『#If 1 Then』と『#End If』を削除して、 間の処理の記述だけを残した場合と同等の処理が行われるのでしょうか? >『#If 0 Then』は、「必ずFalse」=常に無効 この場合、『#If 0 Then』から『#End If』を(間の処理の記述を含み)全て削除しても 同等の処理が行われるのでしょうか?

その他の回答 (3)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.4

バグなどの修正でリビジョンをあげたやAPIなどが変更されていて旧バージョンと互換性が無いとき場合に以前の処理をそのまま残しておく時に #If 0 then ... #end if でくくっておいたりしますよ 実行ファイルには影響を与えないがドキュメントとして残しておきたいなんて場合です

delilah91
質問者

お礼

ご回答ありがとうございます。 なるほど。 『#If 0 then』はコメント文代わりのようなものということでしょうか。

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.3

> >『#If 1 Then』は、「必ずTrue」=常に有効 > この場合、『#If 1 Then』と『#End If』を削除して、 > 間の処理の記述だけを残した場合と同等の処理が行われるのでしょうか? そうなりますね。 > >『#If 0 Then』は、「必ずFalse」=常に無効 > この場合、『#If 0 Then』から『#End If』を(間の処理の記述を含み)全て削除しても > 同等の処理が行われるのでしょうか? そうなりますね。 #ちなみに、実行可能な行(ブレイクポイントが設定可能な行)に関して言えば、 #その行が有効か?は、その行にブレイクポイントを設定してみれば、 #容易に判断できます。 #無効になった行には、ブレイクポイントが設定できませんから。

delilah91
質問者

お礼

追加のご回答ありがとうございます。 おかげさまでスッキリできました。 『#If 0 Then』では確かにブレイクポイントの設定ができませんでした。 ありがとうございます。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>『#If ○○○=1 Then』などの場合はわかるのですが、 if 文で必要なのは比較式の結果です。(True/False) 式の変わりに結果(値)を書き込んでも機能すると言うことでしょう。 If True Then MsgBox "1" If False Then MsgBox "0" ヘルプ(VBA)には、 『他の数値型をブール型の値に変換すると、0 は偽 (False) になり、0 以外の値はすべて真 (True) になります。』とあります。

delilah91
質問者

お礼

早速のご回答ありがとうございます。 申遅れましたが、Visual Basic 6.0を使用しております。 具体的には、 『プロジェクトプロパティ - 実行ファイルの作成 - 条件付きコンパイル引数』 の項目に0でない値が入力されている場合は全て真となる、 という認識で宜しいのでしょうか?

関連するQ&A

  • If..., ....とIf ..., then....の違い

    英語の文章で、 Ifの従属節の次に、主節を記述する場合 (形式としては If..., ....)と、Ifの従属節の次に、thenを挟み、主節を記述する場合(形式としては If..., then....)とでは、両者の間に、意味ないしニュアンスでどういう違いがあるのでしょうか?

  • ifとthen は使わない??

    英語を勉強しはじめたばかりです。 私の作文をネイティブが添削しましたが 添削された箇所について、なぜ直したほうが良いのか分かりません。 (1) 待ち合わせ場所は○○駅のA1出口を出たところでいいですか? 私) Would you mind if meeting place is ○○ St go out Exit A1? ネ) Would you mind meeting at ○○ St go out Exit A1? ・ifは不要? この場合の if は、使わないものでしょうか? この場合は使ったほうが良い この場合では使わないほうが良いなどありましたら教えてください。 ・meeting place is は meeting のほうが良い? meeting place is ~は、英語ではあまりそういう言い方はしないということでしょうか?? (日本語では、"待ち合わせ場所は○○駅のA1出口を出たところ"なんて言い方をしますが・・) (2) このメールを受け取ったら返信してね。 私) If you received this mail then please reply back to me. ネ) If you received this mail please reply back to me. ・thenは不要? この場合の then は、あまり使わないものでしょうか? この場合は使ったほうが良い この場合では使わないほうが良いなどありましたら教えてください。 (3) 間違いだらけの文だったらごめんね、間違ったところ教えてね。 私) If I wrote some sentences full of mistakes, I'm sorry and teach me it. ネ) If I wrote some sentences full of mistakes, I'm sorry, explain then to me. ・and ではなくthen を使うべきのようですが  この場の then はどういった意味でしょうか?  then exlpain to me か explain to me then ではなく  また explain it to me か explain that to me でもなく  explain then to me なので分かりません。 よろしくお願いします。

  • VBAでIf~Thenに条件をもう1つ

     以下のようにExcelのVBAでタイムスタンプを比較するところがあるのですが、比較ファイルがないものがありますその場合もthen以降を実行するには、どうすれば良いのでしょうか? If FileDateTime(Mydoc) > FileDateTime(Mydoc2) Then MsgBox "Mydoc" End If   ここで、Mydoc2が存在しないときも、MsgBox "Mydoc" を実行したいのですが。  ちなみに、Mydoc2のタイムスタンプが新しいときは、飛ばして次の命令文に進みます。  wかりにくい質問ですが、よろしくお願いします。

  • 「IF (条件式) OR _(条件式)THEN」の「_」(アンダーバー

    「IF (条件式) OR _(条件式)THEN」の「_」(アンダーバー)は何故存在する? 他人が作ったエクセルのマクロの式をちょっと直したい素人のものですが、 直そうと思うマクロの式に_(アンダーバー)があり、これは何のためにあるのでしょうか? 条件を増やしたいだけなのですが、例えば2つ条件式を追加したいとしたら、 「IF (条件式) OR _(条件式)OR _(条件式)OR _ (条件式)THEN」」というように アンダーバーを付けるものなのでしょうか? 宜しくお願いいたします

  • if [ 条件式 ]とif[[ 条件式 ]]

    シェルスクリプトでのif [ 条件式 ] と if [[ 条件式 ]] の違いについて教えてください。 以下のシェルスクリプトを実行すると、 意図したとおり、111 と出力されます。 =========▼▼(ここから)▼▼========= #!/bin/sh AAA=yes if [[ "$AAA" = [yY]* ]] then echo 111 else echo 222 fi =========▲▲(ここまで)▲▲========= 上記、スクリプト3行目の if [[ "$AAA" = [yY]* ]] の部分を if [ "$AAA" = [yY]* ] というように、角カッコ 1重にすると、 エラーは発生しませんが、 222と表示されます。 if [ 条件式 ] と if [[ 条件式 ]] の違いについて教えていただけないでしょうか。

  • VBAがわかれば条件付書式は不要ですか?

    エクセルにおいて vbaで「Select Case ステートメント」や「If...Then...Else ステートメント」を組める場合 条件付書式は役にたたないですか? 条件付書式のほうが優れている場合もありますか? よろしくお願いします。

  • If … then の中の条件式と型について

    超初心者のふつつか者です。^^; Dim rc as Long rc = DB_Sub_Select(SQL) If rc Then … 以上のようにコードの一部がなっているのですが、rcはLong型と定義されているので、If rc Then との記述の中ではBoolean 型に自動的に型の変換がされていると考えていいのでしょうか。 また、Ifのあとは条件式が普通ですが、これは、rc=true の省略形なのでしょうか。 MSDNなど検索してみたのですが、うまくみつけられなかったです。

  • If x < y Then 0 Then ←この書き方の意味は?

    VB6.0の出来たプログラムをVB.NETに移行する為にソースを見ているのですが If x < y Then 0 Then ~処理A~ Else ~処理B~ End If と記述されている部分がありました。 「0 Then」がなければ、xがyより小さい時、処理Aを行い、 それ以外の場合は、処理Bを行うというのはわかります。 この時のThen 0 Thenとはどういった意味になるのでしょうか?

  • #If True Then の # って何??

    #If True Then #Else #End if というソースを見たときがあるのですが、何がTrueなのかさっぱり 分かりません。どなたか優しく詳しく例をあげて教えてくださいませんか?

  • 条件付書式 if関数 を利用する

    条件付書式 if関数 を利用する おはよう御座います。 条件付書式でIF関数を利用したいです。 =if(and(e4>=10,L4>=50),"1","") e4が10以上で L4が50以上ならば そのセルに色をつける場合の公式を教えて頂きたいのですが? ,"1","") この部分が間違っていると思うのですが???

専門家に質問してみよう