• ベストアンサー

VB6.0での条件文にある#の意味

先人のVB6.0プログラムを解読する作業中に以下の2行目の#の意味がわかりませんでした。 (0以下であればというif文の中に 1以下であればというif文?) 御教示いただければ幸いです。 if kakudo < 0 then if kakudo <= 1# then kai = 180 + kakudo else kai = 180 end if else kai = 0 end if

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.4

またまた登場、onlyromです。   >duble型と宣言しているのに、また#付きとは。 >この場合は#なくても同じということに・・・? そうです、#はなくてもいいです。 先の回答の Const K As Double = 5000#   '#はあっても無くてもいい と同じことです。 要するに ■値を代入するだけ■なら、#はあってもなくてもいいわけですが、 先の回答の例のように計算に使ってる場合は、 #があるないかが重要になってくるわけです。 また、定数をそのまま使う場合は、 定数に#を付けることで宣言部分を見なくても 左辺の変数の型がDouble型というのが分かるというメリットはあるわけですが。。   ただ、これも変数の付け方を定石どおりやれば 変数の型もその変数名を見れば一目で分かります。 先の回答のように、 整数だったら、integerの頭3桁を取り、intData 倍精度だったら、doubleですから、dblData とすれば変数名を見ただけで変数の型は分かりますよね。   ちょとだらだらとした回答になりました。(^^;;;  

mosimosi99
質問者

お礼

少し時間が開いてしまいました。 なるほどです。。 私が見ているソースはまさに計算で使用されていますので、 また少し考えます。 それにしても質問の本文に書きましたが、 '_____________________________________ if kakudo < 0 then   if kakudo <= 1# then     kai = 180 + kakudo   else     kai = 180   end if else  kai = 0 end if '_____________________________________ これの式はメチャメチャですが、if文の条件はそのままなのです。 一つ目のif文だけで2つ目のif文はいらないような気がしてしまいます・・・ #が付く事で何かif文の条件が変わるのかと思っていましたが・・・ 難しいですね・・・

その他の回答 (4)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.5

またまたまた登場、onlyromです。   当方の回答は、そのコードが正しい云々とは関係なく、 質問のタイトルにある、「条件文にある#の意味」その一点についてです。 コードの正誤は質問者の担当?ということで敢えてそこには言及しませんでした。。。(^^;;; では質問のコードについて。 仰るように間違ったコードですね。 実際は次のようなことだと推測されます。 一行目の if kakudo ■< 0■ then この、<0 は、 >0 のタイプミス(よく言えば)でしょう。 '--------------------------------------------------  If kakudo > 0 then   If kakudo <= 1 then     kai = 180 + kakudo   Else     kai = 180   End If Else   kai = 0 End if '---------------------------------------------- kakudoが ■0より大きくて1以下■0<kakudo<=1 ・・・・kaiに、kakudo+180を代入 ■1より大■1<kakudo ・・・・kaiに、180を代入 ■0以下■kakudo<=0 ・・・・kaiに、0を代入 尚、IF文でも、#はあってもなくても可です。 それにしても >#が付く事で何かif文の条件が変わるのかと思っていましたが ここが質問の要点だとは想像もしませんでした。 道理でどうも論点がずれているような、 しっくりこないような気がしてたのですが、 それが原因だったのですねぃ。(^^;;;  

mosimosi99
質問者

お礼

最後の方は私の仕事も絡んでしまいました・・ 申し訳ないです。 それにしてもこれだけ親切にご教示いただいたので、 だんだんと解明できそうな気がしてきました。 長々とお付き合い頂きありがとうございました。 またすぐに壁に当たるかもですが・・・

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

回答2、onlyromです。 回答1さんがお忙しいようなので。。。 >ここで使用している1はdouble型ですよという意味? そうです。 なぜ、定数に#などつけるかというと 次の例を試してみればはっきり理解できるはずです。 '------------------------------------- Private Sub Command1_Click()   Dim intData As Integer   Dim dblData As Double   intData = 30000   dblData = intData + 5000   MsgBox dblData End Sub '------------------------------------- 上記では定数5000に、#が付いてないので dblData = intData + 5000 ここで、オーバーフローのエラーになります。 なぜなら、intDataも5000も整数ですから 計算結果35000は整数の上限32767を超えるからです で、それを避けるために5000に#を付けDoubleにすると 計算結果はDobuleの範囲内ということで上手くいくわけです。   ただ、コード内に定数を直接使うことはあまりないと思われます。 上記のようなことに常に注意しないといけないからです。 で、どうするかというと '------------------------------------------- Private Sub Command1_Click()   Dim intData As Integer   Dim dblData As Double   Const K As Double = 5000#   '#はあっても無くてもいい   intData = 30000   dblData = intData + K   MsgBox dblData End Sub '------------------------------------------- と定数5000を予めDoubleの変数に入れておき、 計算などのときはその変数を使うのが普通です。  

mosimosi99
質問者

補足

早速の回答感謝です。 しかも例があって分かりやすいこと! 理解できてきました。 その後ソースを読み進んでいくと、更に謎な部分が出てきました。 '_______________________________________________ Dim Data As Double Data = 0# '________________________________________________ duble型と宣言しているのに、また#付きとは。 この場合は#なくても同じということに・・・?

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.2

以下のサイトなど参考になるでしょう。 データ型を参照 http://www.komonet.ne.jp/~vb/chap4.htm    

mosimosi99
質問者

お礼

ありがとうございました。 以後、参考にします。 今回以外の件でも参考になります。

  • AlexSuns
  • ベストアンサー率67% (78/115)
回答No.1

ここで使用されている「#」は、型宣言文字です サフィックスと称されます なので、 1# は、 Double型の1です VB6の型宣言文字には、他にも「!(Single)」「$(String)」等があります ぐぐってみるのもいいでしょう コードのほうは・・・

mosimosi99
質問者

補足

早速の回答ありがとうございます。 すみませんもう少し御教示ください。 1というdouble型の変数を宣言したということでしょうか? それともここで使用している1はdouble型ですよという意味・・・ 同じこと? 混乱してきました。。。

関連するQ&A