HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
1016
teruHSPでの書き方は?2解決


teru

リンク

2018/10/16(Tue) 21:21:04|NO.85595

c言語での配列変数
static int bit0[12] ={~1,~2,~4,~8,~16,~32,~64,~128,~256,~512,~1024,~2048};
static int bit1[12] ={ 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
をHSPでは、どう書けばよいでしょうか?
実は上記の ~ の意味がどう調べてもわからないのです。



この記事に返信する


kanahiron

リンク

2018/10/16(Tue) 22:45:48|NO.85596

ご質問は配列変数への代入のようなのでstatic修飾子は無視しますね
また、C言語で単にintと指定した場合はどれくらいの領域が確保されるか未定(処理系に依存)ですが、これもHSPでは指定できないので無視します(C風に言えばHSPはsigned long intです)

本題
Cでは宣言と同時に代入していますが、HSPは宣言を省略できますので次のように書くことができます

bit0 = 1^-1, 2^-1, 4^-1, 8^-1, 16^-1, 32^-1, 64^-1, 128^-1, 256^-1, 512^-1, 1024^-1, 2048^-1 bit1 = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 102, 2048
宣言をする場合は代入の前の行に「dim bit0, 12」と書いてください

Cでの「~(チルダ)」はビット演算子の「NOT」を表し、ビットを反転させます
HSPにはANDやOR、XORはあるのですがなぜかNOTはありません
ですので、-1(0xFFFFFFFF)と排他的論理和(「^」、「xor」)を取ることでNOT演算子と同様の動きをします

なお、ビット演算はある程度勉強していないとちんぷんかんぷんだと思うのでわからない場合は次のサイトを参考にしてください
http://zaq.g1.xrea.com

最後にビット演算を学ばれたあとの話になりますが、C言語など多くの言語では&と&&などのビット演算子と論理演算子は区別します
HSPでは区別しませんので混同に気をつけてください



teru

リンク

2018/10/17(Wed) 17:51:04|NO.85599

kanahironさん、早速のご指導ありがとうございました。

>>「~(チルダ)」はビット演算子の「NOT」
やはりそうでしたか。しかし配列に演算子という事でほかの意味があるのかと思って
色々ググっていました。

しかし演算子とわかっても
>>排他的論理和(「^」、「xor」)を取ることでNOT演算子
と言う発想が思いついたか?感謝、感謝です。

実は今、私はC言語の教本に載っているサンプルをHSPに書き換えてみるという勉強を
していまして大変助かりました。
早速、この知識を生かして次の段階に進みたいと思います。
ありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.