トピック

え!?

A$とB$を&&したら3という結果が出たんですが、何故ですか?
5そうだね
プレイ済み
返信[1]
親投稿
BlackSoft BlackSoft.mkII3g
以前おちゃめさんが投稿されていました。 文字列と数値を比較演算すると、3が返るみたいですね。 https://miiverse.nintendo.net/posts/AYMHAAADAAB2V0fSfxRUkA
5そうだね
プレイ済み
返信[2]
親投稿
IF "" THEN ? TRUE は真なのに IF !"" THEN ? FALSE は、Type mismatchエラーになるのはなぜだろう。
3そうだね
プレイ済み
返信[3]
親投稿
おちゃめ ochame_nako
私がSUFFIX関数で使っている型判定の部分も文字列と数値の比較演算は3を返すという一種のプチコン3号のバグとも言える裏技によって実現していますが、これを用いないと型判定はかなり大変です。 プチコン3号は比較演算の無い文字列の真偽が少し不可解な部分があります。 ユーザーの側からするとA$に何らかの文字列が入っている場合はtrue、何も入っていない場合はfalseでの処理を期待すると思います。(実際そのように挙動する環境も多いため) しかし、プチコン3号は必ずしもその期待通りの動作をするとは限らず、文字列の真偽判定に関しては確実な動作を希望される場合は「比較演算を行う」必要があります。 つまり、IF A$ THEN ~ではなくIF A$!="" THEN ~のように記述するということです。 だから、おかしな挙動の場合は「比較演算を省略しない」というのが重要です。
2そうだね
プレイ済み
返信[4]
親投稿
おちゃめ ochame_nako
コータさんへ 私はIF !"" THEN ? FALSEがType mismatchになるのは(基本的に「!A$」と記述するのと変わらないため)正しい挙動だと思いますが、IF "" THEN ? TRUE が真になるのは腑に落ちない感じですね。 まぁそういう仕様だと思っていれば別に気になりませんが。
1そうだね
プレイ済み
返信[5]
親投稿
MIKI ifconfig
if "" then が内部で if ""!=0 then という処理をしてるなら腑に落ちそうじゃないですか。
1そうだね
プレイ済み