トピック
かわら hikonyann2

var 変数名 と var 変数名+% の違い

ただの変数と「%」をつけた時とでは何が違うのですか? どんな時に使うのかも教えていただけると...。
2そうだね
未プレイ
返信[1]
親投稿
SilverBlue Corei72630QM
%は強制的に整数になる。
2そうだね
プレイ済み
返信[2]
親投稿
だにえる haru2016nen
特にオプションとかで設定 しない限り基本的には実数型
1そうだね
プレイ済み
返信[3]
親投稿
少し補足します。 1.プチコンは、「変数名」と「変数名%」、「変数名#」を別の変数として理解します。 2.プチコンは、「変数名%」の変数を整数型変数と理解します。 3.プチコンでは、「変数名」の変数を実数型変数と理解します。OPTION DEFINTを指定した時は、その行以降に書かれた「VAR 変数名」の変数や初めて使った「変数名」の変数を整数型変数と理解します。 4.プチコンは、「変数名#」の変数を実数型変数と理解します。 整数型変数に入れることの出来る数値は、「符号付き32ビット整数」(-2147483648から268435455までの整数)になります。 実数型変数には、倍精度実数型と呼ばれる形式が採用されています。
3そうだね
プレイ済み
返信[4]
親投稿
otta777 otta777a
変数に代入される数値が-2147483648~2147483647の 範囲に収まる整数(32ビット符号付き整数)である場合は%を 付けて整数型を指定すると使用するメモリが半分になります。 GSAVE命令でグラフィック画面の512×512ドットの範囲を 配列変数にコピーする場合、%を付けると1048616バイト 使用ですみますが、%を付けず倍精度実数型の変数で行うと 2097192バイト使用します。 他にも大きなサイズの配列を使う命令にMICSAVEやBGSAVEなどが ありますが32ビット符号付き整数で問題無い場合は%を付けると また扱うデータのバイト数が減るので僅かに実行速度が上がります。 100000件のソートをして整数型で90msec、倍精度実数で 190msec程掛かりました。
1そうだね
プレイ済み
返信[5]
親投稿
otta777 otta777a
「%を付けると」の後の文章が抜けてしまいました。 「メモリの節約になります」を追加して下さい。
1そうだね
プレイ済み
返信[6]
親投稿
SilverBlue Corei72630QM
さすがotta777さんだ...メモリ半分になるとは知らなかった!
2そうだね
プレイ済み
返信[7]
親投稿
かわら hikonyann2
詳しい解説ありがとうございます! 変数の型についてまだよくわかっていませんが... 変数名+%は 整数&-2147482648~217483647の範囲なら速く処理ができる。 変数名は 変数名+%より大きい数、少数なども扱える。 変数名+#は 変数名と名前がかぶった時、#をつけて区別できる。(内容は変数名と一緒) こんな感じの認識で良いですかね?
2そうだね
未プレイ
返信[8]
親投稿
ほしけん Hosiken
% : 早く処理ができる。また性質上、整数のみを明示的に扱いたいとき 記号なし : 小数が扱える。ただし OPTION DEFFINT とすると記号なしが全部 % と同じく整数型になる # : OPTION DEFINT 時に小数を扱いたい場合。名前を区別するためではないです
3そうだね
プレイ済み
返信[9]
親投稿
わたしは、プチコンで、数値変数を使うとき、以下のようにしています。 1.必ず整数として扱いたいときは、「%」付きの名前を使う 2.必ず実数として扱いたいときは、「#」付きの名前を使う 3.どちらでもいいときは、「%」「#」なしの名前をつかう (本当は1と2の方がいいのですがメンドくさいので^^;)
2そうだね
プレイ済み
返信[10]
親投稿
otta777 otta777a
あと整数型の変数を四則演算したときに演算結果が -2147483648~2147483647の範囲に収まらない場合に 計算結果が想定される結果と違う場合があります。 少し難しい話ですが最上位ビットが変化する演算の場合に 正の数値を加算したら負の数になったり負の数値を減算したら 正の数値になることがあります。 A%=2147483647:B%=A%+1 C%=-2147483648:D%=C%-1 PRINT A%,B%C%,D% またOPTION DEFINTをしていない状態での変数Aと変数A# OPTION DEFINTした状態での変数Aと変数A%は 変数の方は同じでも別物として扱われますので注意して下さい。
1そうだね
プレイ済み
返信[11]
親投稿
かわら hikonyann2
遅くなってしまいすみません(><) 詳しい説明をありがとうございます! 名前考えるの面倒だからと「なし」と「#付き」で区別するのは良くなさそうですね(^^; 計算結果が正しく反映されないことが!? なんでか知りたい気もしなくないけど、今のとこBGぐらいしか大きい数字使わないし(^^; 私の頭で理解できるかどうかww 回答ありがとうございました。
0そうだね
未プレイ