既に解決してらっしゃいますが、ちょっとだけ失礼します
バグか仕様なのかについては、そもそも明確な言語仕様が存在せず
実装こそが仕様である状態なので、明らかにリファレンスと挙動が
異なる場合以外は仕様だと言えるでしょう
それはさておき、今回の挙動はHSP本体の実装からくるものです
HSPでは単一の要素のみを持つ変数というのは存在しません、変数は
全て配列として実装されているからです
順を追ってみていきます
HSPの構文上では
v = 1
のように、単一の変数への代入が許されています
実はこれ、今のところ次のスクリプトの糖衣構文です
v(0) = 1
HSPの内部実装では配列しか存在しないため、単一の変数としての評価
は自動的に配列の最初の要素の評価と解釈されます
// 次の二つは同じ動作
a = b
a(0) = b(0)
さて、HSPでは構文上単一変数の型は代入時に定まります
次のスクリプトはHSP使いなら誰でも書くと思います
v = 1// ここでvは整数型になる
v = "str"// ここでvは文字列型になる
v = 1.0// ここでvは倍精度浮動小数点型になる
HSPではこのように変数の型が動的に変化し、これによっておおよそ
楽にコードを書くことができます
しかし、先ほども述べましたが単一変数は実際は配列の最初の要素として
評価されます
つまりHSP内部的にはこうなります
v(0) = 1// ここでvは整数型になる
v(0) = "str"// ここでvは文字列型になる
v(0) = 1.0// ここでvは倍精度浮動小数点型になる
というわけで、CとDのケースでエラーもでず変数の型が変わる理由
はここにありました
これを許さないと、単一の変数の代入においても自動的に型が変わら
ないため、とても不便になるのは容易に想像できますね
ちなみに、HSPでは添字1以降は構文的にも配列要素としての評価され
るので、次の例はエラーがでます
ddim v, 10
v(1) = 1// double型の配列にint型を代入しようとした
本来ならば「v」と「v(0)」の評価は、書き方が違うのだから別に
して欲しいですが、今の実装ではこれら二つは同じなので注意が必要です
(なお、この他にも変数が全て配列として実装されているが故の微妙な
挙動をする箇所(仕様)があります、考えてみると面白いかもしれません)
以上、雑談に近い余談でした