Archiverse Internet Archive
投稿のみ 投稿と返信
前のページ(最近)
1 … 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 … 131
次のページ(過去)
投稿
Godot orz_127
昼頃あちこち探していて発見したのですが…。 公式ページの「秘密結社プチコン」の所に「プチコン3号公式ガイドブック」のエラッタが3/23付けで…。 知らなかった^^;
1そうだね
プレイ済み
返信[14]
親投稿
Godot orz_127
>べーさん 横道でもなんでも関連する情報を頂けるのはありがたいです。 たまに全く無関係なコメントをのこしてる人もみかけますがw 別投稿で書いていますがプチコン3は関数に限らず演算子で区切った項を右からリテラルになるまで評価し、その後で演算子順で処理している様です。
0そうだね
プレイ済み
返信[13]
親投稿
Godot orz_127
>けいさん 最近のISOやANSIだったらそれなりに規格化されているようですがK&Rの時代は演算子の優先順位くらいはあったとは思いますが、割りと混沌としていて実装によってさまざまだった気が。 ポケコンに別売りの拡張ROMをつけて動かすC言語のインタープリターとか割りと怪しい動きをしていた記憶がw いまでも何々準拠を唱っていればとりあえず安心ですが、個人が作って見ました的なものやマイナーなC言語だと何処までどう動くか不安です。 以前といっても大昔、C++が出始めた頃、そのハード様のネイティブなC++のコンパイラがなかったのでMakeするとプリプリプロセッサ的な物が動いて一旦C言語にコンバートしてからコンパイルされるC++がありました。 そいつは&&でも一旦全部評価してしまう仕様だったので、はまりかけたことがありますw
0そうだね
プレイ済み
返信[2]
親投稿
Godot orz_127
「A && B」AかつB Aであり、Bでもある。両方。 「A || B」A または B A か、B。どちらか。 IF文とかで両方の条件を満たす必要があるなら「&&」、どちらか一方の条件を満たせば良いなら「||」を使います。
0そうだね
プレイ済み
返信[3]
親投稿
Godot orz_127
関数がと言うより、演算子区切りとして右側からリテラル化(でよいのかな?)してその後、演算子にしたがって計算のような。 なので投稿文にあるようにお互いが影響を受ける様な場合…思わぬバグをうみそうです^^;
0そうだね
プレイ済み
返信[1]
親投稿
Godot orz_127
演算子の順、演算子の優先順位がない場合は左からと思い込んでいましたが、実は演算子区切りで右側から値を出して、一通り値がでたら、演算子の順に計算と言う事みたいです。 但し「&&」(恐らく「||」も)は左から順に評価されるようです。 「&&」の場合は、左側が偽になったら右側は実行しないようです。
0そうだね
プレイ済み
投稿
Godot orz_127
別の投稿「FILES "//"」で本題とは違う所ばかりコメントが伸びたので別記事にしました。 DIM A[1],B[2] A[0]=1:B[0]=2:B[1]=3 ?B[LEN(A)==1]+SHIFT(A) このとき配列Aのサイズが1なので[]内は真(==1)で左側が3。次に配列Aから要素をとりだすので右側は1。足したら4の筈が、何故か3。 簡単に検証して見ました。
4そうだね
プレイ済み
返信[10]
親投稿
Godot orz_127
>けいさん 単に+の左右の問題ではなさそうです^^ 本題と違う話が長くなってきたのでこの件は別で投稿しますw あとC言語と言っても準拠の度合いやプリプロセッサやコンパイラの実装の仕方によって色々だと思います。 あまりC言語だからと過信するとあぶないかもです^^;
0そうだね
プレイ済み
返信[9]
親投稿
Godot orz_127
>Oskarさん そうですよね。 色々な実装があります。 普通と同じに*/+-の演算子があるのでそれなりの優先順位があるものと思っていたら実は演算子に優先順位などない、優先順位をつけたければ()で括れというものも。 確かHSPの前のバージョンがそうでした。 他言語への移植性や判り易さを考えると今は()が不要とわかって居てもあえて()で括れって感じですよね^^
0そうだね
プレイ済み
返信[6]
親投稿
Godot orz_127
通常の式ならば()で何とかなるんですが、今回はそのレベルではなさそうです^^; 大きく見るとひと塊のものを+で2つ並べているだけなので左側の塊が先になりそう。 で、左側の文字列の添え字部分が先に実行されるのでLEN()が先になる筈。よってSHIFT()でF$配列の要素数が0になる前のラス1状態を判定したら良い、と思っていたら残念な結果にw 普通は、一旦別の変数にいれますが、今回は一画面に納めたかったので全体的に詰め込み型のコーディングでw それと面白い現象だったでそのまま残しましたw
0そうだね
プレイ済み
返信[5]
親投稿
Godot orz_127
書店に入ったらレジに直行して店員さんに聞いた方が良いですよ。 自分が最初に聞いた本屋では、23日に1冊だけ入荷しますと言われましたw
1そうだね
プレイ済み
返信[8]
親投稿
Godot orz_127
>りゅうまごさん 自分の投稿の方にはかきましたが どうやら、「FILES "//"」は 3.1.0 からのようです。 3.0.2ではエラーとはりました。 ヘルプには出てこないけど 公式ガイドには書いてある、という状態のようです^^; あねさんに伝わったみたいですね。 TOPの修正版に期待^^
0そうだね
プレイ済み
返信[4]
親投稿
Godot orz_127
>クッキーさん PUSH L$,"トL"[LEN(F$)==0]+SHIFT(F$) これの何処に()をいれれば? 素直にF$[]が最後のひとつ「==1」なら"L"として、その最後のひとつを取り出してつなげる、としたいのですが、先に右側のSHIFT()が実行されてしまいます^^;
0そうだね
プレイ済み
返信[152]
親投稿
Godot orz_127
適当に作っては、Go to startでまた始めてを繰り返してみました。 作った物が、反映される場合と、反映されない場合があるようです。 なので人によってはセーブされる、されないと変わるのではないかと思われます。
0そうだね
プレイ済み
返信[2]
親投稿
Godot orz_127
またやってしまった orz 肝心のプログラムの画像貼り忘れた。
0そうだね
プレイ済み
返信[1]
親投稿
Godot orz_127
で、本題とは別件ですが 16行目、「[LEN(F$)==0]」の所、文字列配列F$をSHIFT()でひとつづつ削っていって、最後の1つになったらという意味で「==1」としていたのですが、どうやら先に後ろのSHIFT()が実行されるらしく、LEN()の時点ではサイズ 0 になっているらしい。 なので「==0」に変更。 式の評価順の仕様がよくわかりません orz
0そうだね
プレイ済み
返信[145]
親投稿
Godot orz_127
試してみようと思ったけど 最新版はプロフィールに書いてあるやつで良いですか?
0そうだね
プレイ済み
投稿
Godot orz_127
りゅうまごさんが「FILES "//"」でプロジェクト一覧が表示出来ることを発見した模様。 確かに公式ガイドブックをみると書いてある…^^; 以前試行錯誤したとき「FILES "//"」ぐらい試してる筈と、3.0.2で実行してみたら、「Illegal function call(FILES)」。 どうやら3.1.0で機能追加されたらしい…。 で、試しにファイル一覧を表示するプログラムを書いてみました^^
14そうだね
プレイ済み
返信[2]
親投稿
Godot orz_127
3.1.0から?? 前に"//"は試した様な…^^; 後で3.0.2で確認してみます。
0そうだね
プレイ済み
返信[77]
親投稿
Godot orz_127
投稿ページのやつをDLしたのをじっこうしたので修正版では直っているのかもですが 発見した不具合を報告しておきます。 ジャンプしながら下に物を置くと上に上がってい行けますが、Y=0、1辺りで飛び跳ねたら out of renge のエラーがでました。 範囲外のチェックをすり抜けるルートがあるようです。 ご確認下さい。
0そうだね
プレイ済み