投稿
イーブン rein-2000
A=ASC(INKEY$) とするとエラーになるのは皆さん知ってると思います。エラーになる理由はINKEY$は入力がない間は""を返すからです。そしてASC()は空っぽの文字列変数を引数として受けとる事ができないからです。 エンターキーの受け付け処理でエラーを回避するために IF INKEY$!="" AND ASC() THEN BEEP(※しっかり判定してるか音で確認) としたのですがエラーになるのです。 しかし IF INKEY$!="" THEN IF ASC(INKEY$)==13 THEN BEEP とすると、エラーにならなかったのです。これはANDで一個目の処理が不成立でも二個目の処理が成立しているか確認しているという証拠ですね~ エンターキーの入力を取るときは 皆さんも注意してください。
2そうだね
プレイ済み
返信[1]
親投稿
イーブン rein-2000
間違いがあったので修正。 「回避するために ~~~~ としたのですが、」の所の処理文が 間違っていたので修正します。 IF INKEY$!="" AND ASC(INKEY$)==13 THEN BEEP でした。 申し訳ありませんでした。
0そうだね
プレイ済み
返信[2]
親投稿
otta777 otta777a
自分がASC(INKEY$)を使う時はASC(INKEY$+CHR$(0)) としてエラーを回避しています。ASC関数は文字列の 1文字目のアスキーコードを返すのでこの場合、何らかの 入力があればその文字のアスキーコードを、入力が無い場合は 0を返します。 CHR$(0)はキーボードから入力できない文字なので0が返って きた場合は入力が無いと判断できます。
1そうだね
プレイ済み
返信[3]
親投稿
Oskar oskar_liebig
3号の場合 && という論理演算子があります。&& の場合、1つ目の条件が成立(0以外)したときに2つ目の条件は実行されませんので、まさにこういうときに便利!  電子説明書のBASIC基本仕様「演算子優先順序」のところに「ショートカットあり」に密かに書いてあるのは、実はこのこ とです。 AND と && はそれ以外にも意味が違っていて …… という話もあるのですが、それはほかの方にお任せします(笑)。
0そうだね
プレイ済み
返信[4]
親投稿
イーブン rein-2000
オスカーさん« そんな演算子あったんですかッ…! Σ(ΟДΟ;)
0そうだね
プレイ済み
返信[5]
親投稿
イーブン rein-2000
あれ…? ANDは両方の処理が 成立してないと実行しないんだよね? だったら1つめが不成立なのに 2つめ確認するのは全くの無駄で あって、文字数も&&の方が 少ないから、比較演算子として 使うANDは要らない子なのか?…
0そうだね
プレイ済み
返信[6]
親投稿
otta777 otta777a
IF INKEY$()=="" && ASC(INKEY$())==13 THEN BEEP と記述するとオートリピートするまでの間は押しっぱなしでも キー入力が無いのでエラーになってしまいます。 IN$=INKEY$():IF IN$==“” && ASC(IN$)=13 THEN BEEP として一度変数に保存をして比較して下さい。
0そうだね
プレイ済み
返信[7]
親投稿
ANDは比較演算子じゃ無くてビット演算子なので比較演算子としての考えでは要らない子でもいいんじゃないかと思いますね。 個人的には比較演算子としては&&や||を使った方が素直だと思います。ビット演算子はビット演算の時に使う方がいいと思います。 ただこの辺は別の意見もあるかもしれないので、それに関して議論などはするつもりはないので、色んな人の意見から自分に合ったものを採用すればいいんじゃないかなと思いますよ。
0そうだね
プレイ済み
返信[8]
親投稿
otta777 otta777a
あわわ、間違えていました。 IN$=INKEY$():IF IN$!=“” && ASC(IN$)==13 THEN BEEP になります。 比較演算子を間違えて記述していました。
0そうだね
プレイ済み
返信[9]
親投稿
Oskar oskar_liebig
すみません。書き間違えていました。 &&は「1つめが不成立なら2つめが実行されない」ですね。 OR に対応する || (切れている縦棒2つ)のほう が「1つめが成立したら2つめが実行されない」でした。
0そうだね
プレイ済み
返信[10]
親投稿
ASC(INKEY$+CHR$(0))なら無入力時0
0そうだね
プレイ済み