コメント

このコメントは、【トピック】if ...&&...でtrueが返らないへのコメントです。

コメントの内容

128 mini fragile(投稿日:2012/07/01 10:07/01/12)
一応否定演算等々含めて検証してみました
やたらと長いですが...
#テスト
a = 0 ; b = createArray()

if 0 then b[0]=true ; else b[0]=false ; end
if a then b[1]=true ; else b[1]=false ; end

if 0 || a then b[2]=true ; else b[2]=false ; end
if a || 0 then b[3]=true ; else b[3]=false ; end

if 0 && a then b[4]=true ; else b[4]=false ; end
if a && 0 then b[5]=true ; else b[5]=false ; end

if !0 then b[6]=true ; else b[6]=false ; end
if !a then b[7]=true ; else b[7]=false ; end

if (!0) || a then b[8]=true ; else b[8]=false ; end
if 0 || (!a) then b[9]=true ; else b[9]=false ; end
if (!0) || (!a) then b[10]=true ; else b[10]=false ; end

if (!a) || 0 then b[11]=true ; else b[11]=false ; end
if a || (!0) then b[12]=true ; else b[12]=false ; end
if (!a) || (!0) then b[13]=true ; else b[13]=false ; end

if (!0) && a then b[14]=true ; else b[14]=false ; end
if 0 && (!a) then b[15]=true ; else b[15]=false ; end
if (!0) && (!a) then b[16]=true ; else b[16]=false ; end

if (!a) && 0 then b[17]=true ; else b[17]=false ; end
if a && (!0) then b[18]=true ; else b[18]=false ; end
if (!a) && (!0) then b[19]=true ; else b[19]=false ; end

#画面に収まらないので
setTextFontSize(getTextFontSize()/2)
setTextViewMode(1-getTextViewMode())

#テスト結果を表示
speakFullScreen(true, "    a = 0"
                             , "\n if 0 = ",b[0]
                             , "\n if a = ",b[1]
                             , "\n if 0||a = ",b[2]
                             , "\n if a||0 = ",b[3]
                             , "\n if 0 && a = ",b[4]
                             , "\n if a && 0 = ",b[5]
                             , "\n if !0 = ",b[6]
                             , "\n if !a = ",b[7]
                             , "\n if !0||a = ",b[8]
                             , "\n if 0||!a = ",b[9]
                             , "\n if !0||!a = ",b[10]
                             , "\n if !a||0 = ",b[11]
                             , "\n if a||!0 = ",b[12]
                             , "\n if !a||!0 = ",b[13]
                             , "\n if !0&&a = ",b[14]
                             , "\n if 0&&!a = ",b[15]
                             , "\n if !0&&!a = ",b[16]
                             , "\n if !a&&0 = ",b[17]
                             , "\n if a&&!0 = ",b[18]
                             , "\n if !a&&!0 = ",b[19])


画面テキスト
a = 0
if 0 = true
if a = true
if 0||a = true
if a||0 = true
if 0 && a = false
if a && 0 = false
if !0 = false
if !a = false
if !0||a = true
if 0||!a = false
if !0||!a = false
if !a||0 = true
if a||!0 = false
if !a||!0 = false
if !0&&a = false
if 0&&!a = false
if !0&&!a = false
if !a&&0 = false
if a&&!0 = false
if !a&&!0 = false

aも0もtrueなのに&&で判定するとfalseになったのですが
HP等に使用することを考えた仕様でしょうか?
(でも if HP だと0でもtrueだし...)

コメントの内容(一番最初の投稿)

128 mini fragile(投稿日:2012/07/01 10:07/01/12)
一応否定演算等々含めて検証してみました
やたらと長いですが...
#テスト
a = 0 ; b = createArray()

if 0 then b[0]=true ; else b[0]=false ; end
if a then b[1]=true ; else b[1]=false ; end

if 0 || a then b[2]=true ; else b[2]=false ; end
if a || 0 then b[3]=true ; else b[3]=false ; end

if 0 && a then b[4]=true ; else b[4]=false ; end
if a && 0 then b[5]=true ; else b[5]=false ; end

if !0 then b[6]=true ; else b[6]=false ; end
if !a then b[7]=true ; else b[7]=false ; end

if (!0) || a then b[8]=true ; else b[8]=false ; end
if 0 || (!a) then b[9]=true ; else b[9]=false ; end
if (!0) || (!a) then b[10]=true ; else b[10]=false ; end

if (!a) || 0 then b[11]=true ; else b[11]=false ; end
if a || (!0) then b[12]=true ; else b[12]=false ; end
if (!a) || (!0) then b[13]=true ; else b[13]=false ; end

if (!0) && a then b[14]=true ; else b[14]=false ; end
if 0 && (!a) then b[15]=true ; else b[15]=false ; end
if (!0) && (!a) then b[16]=true ; else b[16]=false ; end

if (!a) && 0 then b[17]=true ; else b[17]=false ; end
if a && (!0) then b[18]=true ; else b[18]=false ; end
if (!a) && (!0) then b[19]=true ; else b[19]=false ; end

#画面に収まらないので
setTextFontSize(getTextFontSize()/2)
setTextViewMode(1-getTextViewMode())

#テスト結果を表示
speakFullScreen(true, "    a = 0"
                             , "\n if 0 = ",b[0]
                             , "\n if a = ",b[1]
                             , "\n if 0||a = ",b[2]
                             , "\n if a||0 = ",b[3]
                             , "\n if 0 && a = ",b[4]
                             , "\n if a && 0 = ",b[5]
                             , "\n if !0 = ",b[6]
                             , "\n if !a = ",b[7]
                             , "\n if !0||a = ",b[8]
                             , "\n if 0||!a = ",b[9]
                             , "\n if !0||!a = ",b[10]
                             , "\n if !a||0 = ",b[11]
                             , "\n if a||!0 = ",b[12]
                             , "\n if !a||!0 = ",b[13]
                             , "\n if !0&&a = ",b[14]
                             , "\n if 0&&!a = ",b[15]
                             , "\n if !0&&!a = ",b[16]
                             , "\n if !a&&0 = ",b[17]
                             , "\n if a&&!0 = ",b[18]
                             , "\n if !a&&!0 = ",b[19])


画面テキスト
a = 0
if 0 = true
if a = true
if 0||a = true
if a||0 = true
if 0 && a = false
if a && 0 = false
if !0 = false
if !a = false
if !0||a = true
if 0||!a = false
if !0||!a = false
if !a||0 = true
if a||!0 = false
if !a||!0 = false
if !0&&a = false
if 0&&!a = false
if !0&&!a = false
if !a&&0 = false
if a&&!0 = false
if !a&&!0 = false

aも0もtrueなのに&&で判定するとfalseになったのですが
HP等に使用することを考えた仕様でしょうか?
(でも if HP だと0でもtrueだし...)