アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6.0のプログラムで、下記のようなコードがあったのですが、(intA<=3)の部分の結果がどういう意味なのかわからないのでう教えてください。

intAは0~9が入る予定みたいです。

intA as Integer
intB as Integer
intB = 1 + (intA <= 3)

A 回答 (2件)

変数の宣言と問題の式の間には別の処理が有るものとします。



括弧の中は、条件判断をしています。結果として「True」か「False」が返るのですがVBの場合、
True=-1
False=0
だったと思います。

なので、intAが3以下の時はintBは0、intAが3より大きいときはintBは1になります。

intB=1+(intA<=3)
 ↓
If intA<=3 Then
 intB=0
Else
 intB=1
End If

と同じ事だと思いますよ。
    • good
    • 0
この回答へのお礼

boolean型を数値で表すことが出来るとは知りませんでした。

すっきりしました。

ありがとうございました。

お礼日時:2010/11/22 14:17

<=みたいな比較の不等号は、プログラム言語では「比較演算子」と言って、左右の項を比較した結果、その条件が成立っていたら(a<=bなら aがb以下だったら)「真」を表わす値、そうでないなら(a<=bなら aがbより大きかったら)「偽」を表わす値になります。



一応、VB6ではBoolean型のtureとfalseという値になるのですが、これを数値を使う式の中で使うと、trueが-1,falseが0として扱われます。

その例ですと
intA≦3の場合、 intA<=3はtrueなので
intB= 1+ (-1) → intB =0

intA>3の場合、 intA<=3はfalseなので
intB= 1+ (0) → intB =1

となります。

比較演算子がどんな値になるか、true/falseがどんな値になるか、は言語によって違います。
C言語ではtrueのときは1になります。このプログラムをそのまま移植するなら intB= 1-(intA<=3); にしないと値が変わってしまいます。
また、True/Falseと数値とはまったく別の値で、単純に相互変換できないものもあります。

昔のインタプリタ型Basicとかだと
if intA<=3 then intB=0 else intB=1
とかするより格段に速かったので、有効なやり方でしたが、最近では、CPUの高速化やコンパイルの最適化でほとんど差が無い上に、プログラムがわかりにくくなるので、あんまり使わないテクニックですね
    • good
    • 0
この回答へのお礼

細かく解説していただいてありがとうございました。

申し訳ないのですが、ベストアンサーは、先着順でつけさせて頂きました。

お礼日時:2010/11/22 14:20

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